1、后台安全管理
deny 拒绝
allow 允许
location = /admin.php {
allow 10.0.0.11;
allow 186.10.12.0/24;
deny all;
}
2、设置账号和密码
1)安装加密命令
yum install httpd-tools
2)生成加密文件
htpasswd -b -c /etc/nginx/auth_conf liangzeyu 123456
加密命令 固定参数 加密文件 账号 密码
3)开始配置
location = /admin.php {
auth_basic "欢迎访问贷款网站后台,请输入账号和密码!!";
auth_basic_user_file /etc/nginx/auth_conf;
}
3、优雅报错
如果用户访问页面的状态码是 500 502等,则返回给用户/usr/share/nginx/html路径里面的50x.html代码文件。
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
4、匹配规则
= 精准匹配
= /admin.php 如果用户访问的是admin.php,就执行下面的规则。如果访问的是Admin.php或者admin.php1。
^~ 以什么开头
^~ /admin.php 如果用户访问的是admin.php或者admin.php123、admin.php1ak则匹配。如果用户访问的是1admin.php则不匹配。
~ 区分大小写
~ /admin.php 如果用户访问的是/admin.php则匹配,如果用户访问的是Admin.php则不匹配。
*~ 不区分大小写
*~ /admin.php 如果用户访问的是/admin.php或者/AdMiN.PhP是匹配的。
5、网站访问情况
location = /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
--------------
Active connections: 6
server accepts handled requests
6 6 53
Reading: 0 Writing: 1 Waiting: 5
------------------
Active connections 当前活动客户的连接数
accepts 已接受总的TCP连接数
handled 已处理总的TCP连接数
requests 客户端总的http请求数
Reading 当前nginx读取的请求头的连接数
Writing 当前nginx将响应写回客户端的连接数
Waiting 当前等待请求的空闲客户端的连接数
--------------------------------------
6、nginx限流
漏桶 一直排队
令牌桶算法 按照令牌确认是否拒绝或者排队或者处理
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
第一个参数:$binary_remote_addr 表示通过remote_addr这个标识来做限制,“binary_”的目的是缩写内存占用量,是限制同一客户端ip地址。
第二个参数:zone=one:10m表示生成一个大小为10M,名字为one的内存区域,用来存储访问的频次信息。
第三个参数:rate=1r/s表示允许相同标识的客户端的访问频次,这里限制的是每秒1次,还可以有比如30r/m的。
limit_req zone=one burst=5 nodelay;
第一个参数:zone=one 设置使用哪个配置区域来做限制,与上面limit_req_zone 里的name对应。
第二个参数:burst=5,重点说明一下这个配置,burst爆发的意思,这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,超过了访问频次限制的请求可以先放到这个缓冲区内。
第三个参数:nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,如果没有设置,则所有请求会等待排队。
例子:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location /search/ {
limit_req zone=one burst=5 nodelay;
}
}
下面配置可以限制特定UA(比如搜索引擎)的访问:
limit_req_zone $anti_spider zone=one:10m rate=10r/s;
limit_req zone=one burst=100 nodelay;
if ($http_user_agent ~* "googlebot|bingbot|Feedfetcher-Google") {
set $anti_spider $http_user_agent;
}
7、代理
# 用户请求的时候HOST的值是www.bgx.com, 那么代理服务会像后端传递请求的还是www.bgx.comproxy_set_header Host $http_host;# 将$remote_addr的值放进变量X-Real-IP中,$remote_addr的值为客户端的ipproxy_set_header X-Real-IP $remote_addr;# 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;4.代理到后端的TCP连接、响应、返回等超时时间, 如图//nginx代理与后端服务器连接超时时间(代理连接超时)Syntax: proxy_connect_timeout time;Default: proxy_connect_timeout 60s;Context: http, server, location//nginx代理等待后端服务器的响应时间Syntax: proxy_read_timeout time;Default: proxy_read_timeout 60s;Context: http, server, location//后端服务器数据回传给nginx代理超时时间Syntax: proxy_send_timeout time;Default: proxy_send_timeout 60s;Context: http, server, location5.proxy_buffer代理缓冲区, 如图//nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端Syntax: proxy_buffering on | off;Default: proxy_buffering on;Context: http, server, location//设置nginx代理保存用户头信息的缓冲区大小Syntax: proxy_buffer_size size;Default: proxy_buffer_size 4k|8k;Context: http, server, location//proxy_buffers 缓冲区Syntax: proxy_buffers number size;Default: proxy_buffers 8 4k|8k;Context: http, server, location
[root@Nginx ~]# vim /etc/nginx/proxy_paramsproxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout 30;proxy_send_timeout 60;proxy_read_timeout 60;proxy_buffering on;proxy_buffer_size 32k;proxy_buffers 4 128k;7.代理配置location时调用, 方便后续多个Location重复使用location / {proxy_pass http://127.0.0.1:8080;include proxy_params;}
8、https
https参数
ssl on;ssl_certificate ssl_key/server.crt;ssl_certificate_key ssl_key/server.key;
http强制跳转至https
server {listen 80;server_name baidu.com;return 302 https://$server_name$request_uri;#rewrite ^(.*) https://$server_name$1 redirect;}
企业级配置
ssl on;ssl_session_timeout 10m;ssl_certificate ssl_key/1524377920931.pem;ssl_certificate_key ssl_key/1524377920931.key;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;
有问题请加博主微信进行沟通!
全部评论