centos7,搭建nginx的源,在/etc/yum.repos.d/下新建一个/nginx.repo文件,里面添加内容

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

http://nginx.org/packages/OS/OSRELEASE/$basearch/

OS换成centos
OSRELEAS换成7

然后保存,进行测试
nginx包

yum install nginx

yum安装nginx

如果是yum直接安装的 rpm -ql nginx 查看服务的安装的配置和文件.

/etc/logrotate.d/nginx 配置文件 nginx日志轮转,用于logrotate服务的日志切割。

/etc/nginx /etc/nginx/nginx.conf /etc/nginx/conf.d /etc/nginx/conf.d/default.conf 这两个目录下的配置文件nginx.conf是主配置文件,default.conf是默认server的配置文件。

/etc/nginx/fastcgi_params /etc/nginx/uwsgi_params /etc/nginx/scgi_params 是 cgi.fastcgi的相关配置

/etc/nginx/mime.types 设置http协议的content-type与扩展名对应关系

centos7.2采用的了新的守护进程管理器管理方式,/usr/lib/systemd/system/nginx-debug.service /usr/lib/systemd/system/nginx.service /etc/sysconfig/nginx /etc/sysconfig/nginx-debug

nginx的模块目录 /usr/lib64/nginx/modules /etc/nginx/modules

nginx缓存目录 /var/cache/nginx log目录/var/log/nginx

nginx -V 查看编译参数命令

TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=webadmin --group=webadmin --with-select_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_stub_status_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_v2_module

模块和配置

日志

log_format main '$remote_add' …..

意思是 定义个一 log格式喂main的日志。内容是…. 然偶在access_log 后面 /var/log/nginx/access.log 加上main;

–with-http_stub_status_module

nginx的客户状态。配置方法

server{

location /status {
   stub_status;
 }
}

nginx -t 检查配置有错没 然后访问改路径

–with-htto_random_index_module

目录中选择一个随机主页

语法:random_index on| off;默认:random_index off;作用域:location里面。

server{
 location /{
  root /opt/app/code;
  random_index on;
 #index index.html index.php
  }
}

–with-http_sub_module

HTTP内容替换

语法:sub_filter string 要替换的内容
默认:null
作用域:http,server,location

语法:sub_filter_last_modified on|off; 最后修改时间主要用于缓存,校验服务端内容便跟,记录时间
默认:sub_filter_last_modified off;
作用域:http,server,location

location /{
 root /opt/app/caode;
 index index.html
 sub_filter '<a>qd'  '<a>ddd'
 sub_ftlter_once off;
}

sub_ftlter_once off;是全局替换 on是指替换一次

nginx的请求限制

连接频率的限制 -limit_conn_module
请求频率限制 – limit_req_module

http1.0 tcp不能复用 http1.1顺序性tcp服用 http2.0多路复用tcp

连接限制

语法:limit_conn_zone key zone=name:size;
defult:-
作用域:http

语法:limit_conn zone number;
默认:-
作用域:http,server,location

请求限制

语法:limit_req_zone key zone=name:size rate=rate;
默认:
作用域:http

语法:limit_req zone=name [burst=number] [nodelay];
默认:
作用域:http,server.location

nginx的访问控制

基于IP的访问控制 – http_access_module
基于用户的信任登陆 – http_auth_basic_module

http_access_module

语法:allow address |CIDR |UNIX:| all;
默认:
作用域:http,server,location,limit_except;

语法:deny address |CIDR|uninx:|all;
默认:
作用域:http,server,location,limit_except;

location ~ ^/admin.html {
  root /opt/app/code;
  deny  222.128.189.17; //只禁用这个IP访问
   allow all;
 index  index.html index.html 
 
}
location ~ ^/admin.html {
  root /opt/app/code;
  allow 222.128.189.0/24; //只允许这个IP段进行访问
  deny  all; 

 index  index.html index.html 
 
}

http_access_module的局限性:

有可能IP1 ->nginx,CND,代理 ->nginx IP地址过来的是remote_addr=ip2 准确性不好,有人想到http_x_forwarded_for

ip代理

解决这个局限性:

1,采用 http头信息控制访问 HTTP_X_FORWARD_FOR 但是请求头信息是可以是设置并且伪造的,他只是个协议要求的,但别人不一定遵守。

2,结合GEO模块做 3,通过HTTP自定义变量传递

模块:http_auth_basic_module

语法:auth_basic string|off;
默认:auth_basic off;
作用域:http,server,location,limit_except

语法:auth_basic_user_file file;
默认:
作用域:http,server,location,limit_except

需要 yum install httpd-tools -y 这个工具包

htpasswd -c ./authfile user 意思是生成一个文件 用户名是user 然后输入两次密码

location ~ ^/admin.html {
 root /opt/app/code;
 auth_basic "Auth access test!";
 auth_basic_user_file /etc/nginx/authfile;
 index  index.html 
}

再次输入这个网址,需要用户名 user 和对应的密码才能进入

Last modification:January 11, 2020
如果觉得我的文章对你有用,请随意赞赏