提高Nginx的性能,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日至模块的上面一行

 

posted @ 2019-03-08 11:33  Cheney&  阅读(440)  评论(0编辑  收藏  举报