nginx的一些优化

文章来源:华科小宝   作者:姜轩轩     发布时间:2020-12-30 03:51    浏览量:

一、自定义报错页面?

优化前,客户端使用浏览器访问不存在的页面,会提示404文件未找到

 

操作步骤:
1,vim打开配置文件,修改error_page行

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

 

2,网上下载一张图片,命名为404.jpg放到下面的位置

[root@nginx html]# pwd/usr/local/nginx/html[root@nginx html]# ls404.jpg  50x.html  index.html优化后,客户端使用浏览器访问不存在的页面,会提示自己定义的404页面

二、优化Nginx并发量

优化前使用ab高并发测试

[root@nginx html]# ab -n 2000 -c 2000 http://192.168.4.100/

Benchmarking 192.168.4.100 (be patient)

socket: Too many open files (24)

修改Nginx配置文件,增加并发量

[root@nginx html]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; //与CPU核心数量一致
events {
worker_connections 65535; //每个worker最大并发连接数
}
… …

优化Linux内核参数(最大文件数量)

除了nginx本身对并发量有限制,linux系统本身对文件的访问也有限制,默认情况下linux系统仅允许一个文件同时被打开1024次。
临时修改限制,修改为支持10万

[root@nginx html]# ulimit -Hn 100000

[root@nginx html]#  ulimit -Sn 100000

测试

[root@nginx html]# ab -n 2000 -c 2000 http://192.168.4.100/

Percentage of the requests served within a certain time (ms)

  50%     10

  66%     19

  75%     39

  80%     40

  90%     55

  95%     62

  98%     62

  99%     62

 100%    239 (longest request)

三、优化Nginx服务的安全配置

1, 修改版本信息,并隐藏具体的版本号

默认Nginx会显示版本信息以及具体的版本号,这些信息给攻击者带来了便利性,便于他们找到具体版本的漏洞。
优化前:

[root@nginx html]# curl -I http://192.168.4.100

HTTP/1.1 200 OK

Server: nginx/1.12.2

Date: Mon, 28 Dec 2020 16:47:23 GMT

Content-Type: text/html

Content-Length: 612

Last-Modified: Mon, 28 Dec 2020 15:42:55 GMT

Connection: keep-alive

ETag: "5fe9fcff-264"

Accept-Ranges: bytes

优化:

[root@nginx html]# vim /usr/local/nginx/conf/nginx.conf

… …

http{

     server_tokens off; #在http下面手动添加这么一行

     … …}

优化后

[root@nginx html]# curl -I http://192.168.4.100

HTTP/1.1 200 OK

Server: nginx

2, 拒绝非法的请求

网站使用的是HTTP协议,该协议中定义了很多方法,可以让用户连接服务器,获得需要的资源。但实际应用中一般仅需要get和post。

优化前:GET和HEAD都可以

[root@nginx ~]# curl -i -X GET  http://192.168.4.100

HTTP/1.1 200 OK

Server: nginx

[root@nginx ~]#  curl -i -X HEAD http://192.168.4.100

HTTP/1.1 200 OK

Server: nginx

优化:

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf

server{}里面加一个if语句

  if ($request_method !~ ^(GET|POST)$ ) {

     return 404;

       }  [root@nginx ~]# /usr/local/nginx/sbin/nginx -s reload

优化后:HEAD请求出错

[root@nginx ~]# curl -i -X GET http://192.168.4.100

HTTP/1.1 200 OK

Server: nginx

[root@nginx ~]# curl -i -X HEAD http://192.168.4.100

HTTP/1.1 404 Not Found

Server: nginx

 

四、编写日志切割脚本

1.编写脚本

[root@nginx ~]# vim /usr/local/nginx/logbak.sh

 

#!/bin/bash

date=`date +%Y%m%d`

logpath=/usr/local/nginx/logs

mv $logpath/access.log $logpath/access-$date.log

mv $logpath/error.log $logpath/error-$date.log

kill -USR1 $(cat $logpath/nginx.pid)

2.创建计划任务
crontab -e
03 03 * * 5 /usr/local/nginx/logbak.sh
计划任务可以随便写

五、Nginx的一些模块

ngx_http_core_module(核心模块,包含http、server_name、root等配置参数)

ngx_http_access_module(访问控制模块,包含allow和deny配置参数)

ngx_http_auth_basic_module(用户认证模块,包含auth_basic等配置参数)

ngx_http_charset_module(字符集模块,包含charset utf8等配置参数)

ngx_http_fastcgi_module(fastcgi模块,包含fastcgi_pass等配置参数)

ngx_http_gzip_module(压缩模块,包含gzip、gzip_type等配置参数)

ngx_http_limit_conn_module(限制并发量模块,包含limit_conn等参数)

ngx_http_log_module(日志模块,包含access_log等配置参数)

ngx_http_proxy_module(代理模块,包含proxy_pass等配置参数)

ngx_http_rewrite_module(地址重写模块,包含rewrite、break、last等配置参数)

ngx_http_ssl_module(加密模块,包含ssl_certificate、ssl_certificate_key等参数)

ngx_http_stub_status_module(状态模块,包含stub_status配置参数)

ngx_http_upstream_module(调度器模块,包含upstream、hash、ip_hash等配置参数)

ngx_stream_core_module(4层代理模块)


甘肃华科信息技术有限责任公司    版权所有    甘公网安备 62010202001329