nginx的优化(有一定难度)

nginx如果在生产环境中使用必须要经过优化后才能使用

1.增大并发量    2.防止DDOS攻击   3.报错页面优化   4.nginx状态监控   5.根据系统客户端不同给出页面

1.增大并发访问量

#user  nobody;
worker_processes  1;                                          一共开启1个进程,必与cpu的核心数一致

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;                              1个进程开启1024个线程      
}
以上是配置文件的开头,定义了nginx开启多少进程,以及一个进程开启多少个线程。

进程:一个程序执行的基本单位,获取一定的计算机资源

线程:一个进程的基本单位,使用进程获取的资源,是CUP调度的基本单位

一个线程处理一个用户请求 因此worker_connections   65536往大写,但进程数必须是cpu的核心数(cat /proc/cpuinfo看)

但是!linux系统内和限制最大打开文件数是1024,所以需要修改内核参数

ulimit  -a     查看

open files                      (-n) 1024

ulimit  -Hn   30000         硬限制:不能超过

ulimit  -Sn   30000         软限制:可以超过

vim /etc/security/limits.conf    永久生效

*             soft     nofile           30000
*            hard     nofile           30000

测试 ab  -c  10000  -n  10000  http://服务器ip/

2.防止ddos攻击

dos攻击:拒绝服务攻击,发送大量请求连接服务器,占用服务器带宽直到网络资源耗尽无法正常提供服务

ddos攻击:控制大量机器dos攻击升级版。

limit_req_zone  $binary_remote_addr  zone=one:10m  rate1r/s;           #设置防ddos模块10M空间每个ip每秒只接一个请求 

server {
        listen       80;
        server_name  localhost;

        limit_req  zone=one  burst=5;                                                  #调用(官网上有)

3.报错页面优化

防止客户端访问拼写错误出现http报错过于生硬

  error_page            404              /404.html;      

将改行去注释并设置个性化提示页面404 414 403 等等都可以

4.nginx监控模块安装

./configure  --with-http_stub_status_module

make  不要make install

[root@zabserver nginx-1.12.2]# cp      objs/nginx           /usr/local/nginx/sbin/nginx 
cp:是否覆盖"/usr/local/nginx/sbin/nginx"?y

server {

   ...        

location  /status{

      stub_status  on;                

      allow IP;

}

}

重启nginx配置

curl  http://192.168.4.1/status  即可看到页面

5根据系统客户端不同给出页面

因为windows端和安卓端显示大小所以一个页面常做两个版式

html/index.php     html/Android/index.php

这里配置文件中加入地址重写

if ($http_user_agent  ~*  android) {

 rewrite     ^/(.*)  /Android/$1

}

原理:if匹配包头信息中包含android,请求页面为/10.html,地址重写:为/Android/10.html

html/目录下存windows页面   html/Android/下存android页面 

猜你喜欢

转载自blog.csdn.net/m0_37628356/article/details/81113169