nginx优化
1: 保持Nginx的升级
目前Nginx的稳定版本为1.14.0,最好升级到最新版本,官方的release note修复了很多bug,任何一款产品的生产环境都不想在bug风险下运行的。
另外,虽然安装包安装比通过源代码编译安装更容易,但后一个选项有两个优点:
1.它允许您将额外的模块添加到Nginx中(如more_header,mod_security),
2.它总是提供比安装包更新的版本,在Nginx网站上可看release note。
2.注释不用的Nginx模块
./configure --without-module1 --without-module2 --without-module3 例如: ./configure --without-http_dav_module --withouthttp_spdy_module #注意事项:配置指令是由模块提供的。确保你禁用的模块不包含你需要使用的指令!在决定禁用模块之前,应该检查Nginx文档中每个模块可用的指令列表。
3: 在Nginx配置中禁用server_tokens项
server_tokens在打开的情况下会使404页面显示Nginx的当前版本号。这样做显然不安全,因为黑客会利用此信息尝试相应Nginx版本的漏洞。
只需要在nginx.conf中http模块设置server_tokens off即可,禁用的效果是在404时不显示版本号。例如:
server {
listen 192.168.1.1:80;
Server_tokens off;
server_name tecmintlovesnginx.com www.xxx.com;
access_log /var/www/logs/xxx.access.log;
error_log /var/www/logs/xxx.error.log error;
root /var/www/xxx.com/public_html;
index index.html index.htm;
}
#重启Nginx后生效:
4: 禁止非法的HTTP User Agents
User Agent是HTTP协议中对浏览器的一种标识,禁止非法的User Agent可以阻止爬虫和扫描器的一些请求,防止这些请求大量消耗Nginx服务器资源。
为了更好的维护,最好创建一个文件,包含不期望的user agent列表例如/etc/nginx/blockuseragents.rules包含如下内容:
map $http_user_agent $blockedagent {
default 0;
~*malicious 1;
~*bot 1;
~*backdoor 1;
~*crawler 1;
~*bandit 1;
}
然后将如下语句放入配置文件的server模块内:
include /etc/nginx/blockuseragents.rules;
并加入if语句设置阻止后进入的页面:
Nginx:
include /*/nginx/blockuseragents.rules;
server {
if ($blockedagent) {
return 403;
}
Nginx file
}
5.禁用不使用的HTTP server模块
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 444;
}
6.设置缓冲区容量上限
server 模块
client_body_buffer_size 1k; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k; #设置后,不管多少HTTP请求都不会使服务器系统的缓冲区溢出了。
7.限制最大连接数
在http模块中,server模块外设置limit_conn_zone可以设置联机的IP
在https,server or location哦明快设置limit_conn 可以设置ip的最大连接数
limit_conn_zone $binary_remote_addr zone=addr:5m; limit_conn addr 1;
include /*/nginx/blockuseragents.rules;
limit_conn_zone $binnary_remove_addr zone=addr:5m;
server {
if ($blockedagent) {
return 403;
}
if ($request_method !~ ^(GET|GEAD|POST)$) {
return 444;
}
limit_conn addr 1;
listen 192.168.1.1:80:
server_tokens off;
Nginx file
}
8.设置监控日志
可以筛选{
Client_ip
浏览器类型
HTTP requests 类
请求内容
服务器响应的内容
}
9.禁用图片外连接到自己的服务区
这样会加大对服务器带宽的压力
location /img/ {
valid_referers none blocked 192.168.1.1;
if ($invalid_referer) {
return 403;
}
}
10.禁用SSL并且之打开TLS
这个看情况自定义,不是非要禁用的
ssl_protocols TLSv1 TSLv1.1 TSLv1.2;
include /*/nginx/blockuseragents.rules;
limit_conn_zone $binnary_remove_addr zone=addr:5m;
server {
if ($blockedagent) {
return 403;
}
if ($request_method !~ ^(GET|GEAD|POST)$) {
return 444;
}
ssl_protocols TLSv1 TSLv1.1 TSLv1.2;
limit_conn addr 1;
listen 192.168.1.1:80:
server_tokens off;
Nginx file
}
11.HTTPS 收费项
阿里云有HTTPS认证,有免费的单站点认证以及收费的全战HTTPS
详情跳转:https://www.cnblogs.com/chenwz/p/9401705.html#4039143
12.如果安装了https,就把所有的流量定向到https
return 301 https://$server_name$request_uri;
加在access_log日至模块的上面一行


浙公网安备 33010602011771号