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
然后保存,进行测试
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
解决这个局限性:
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 和对应的密码才能进入