nginx标准化

标准化:
Nginx:
一:系统优化
1,内核优化:
vi /etc/sysctl.conf
添加
net.ipv4.ip_local_port_range = 1024 65535
vm.swappiness = 0 最大程度使用物理内存  swappiness=100的时候表示积极的使用swap分区
net.core.somaxconn = 65535 常常在它们的配置文件中有设置队列大小的选项。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助  
net.ipv4.tcp_max_syn_backlog = 65535还未获得客户端确认的连接请求﹐需要保存在队列中最大数目
net.ipv4.tcp_fin_timeout = 30  超时时间
net.ipv4.tcp_tw_reuse = 1 1表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0
net.ipv4.tcp_retries2 = 5   TCP失败重传次数,默认值5,意味着重传5次才彻底放弃.可减少到5,以尽早释放内核资源.
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_keepalive_time = 1800 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是3小时,改为20分钟
net.ipv4.tcp_keepalive_intvl = 30     
net.ipv4.tcp_keepalive_probes = 5
net.core.netdev_max_backlog = 8192
2,文件优化:
修改ulimit
1.vi /etc/security/limits.conf

*        soft   nproc  65535
*        hard   nproc  65535
*        soft   nofile  65535
*        hard   nofile  65535
*       soft    stack   unlimited
3,nginx安装:
Nginx安装分为yum安装以及源码安装
源码安装这些必须加上,
./configure --user=nginx --group=nginx --prefix=/opt/nginx --with-pcre=/root/pcre-8.37 --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module
Make
Make install
如果做健康检查安装nginx_upstream_check_module,模块
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
unzip master
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
patch -p1 < ../nginx_upstream_check_module-master/check_1.7.5+.patch
编译时候需要加上--add-module=nginx_upstream_check_module-master/
4,nginx配置文件
nginx配置文件参数调整
user  nginx;
worker_processes  2; 一般一个进程足够了,你可以把连接数设得很大。
如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。
或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,
以充分利用IO带宽(主要似乎是IO操作有block)。

pid        logs/nginx.pid;
worker_rlimit_nofile 65535;     更改worker进程的最大打开文件数限制

events {
      use epoll;   支持一个进程打开大数目的socket描述符 IO效率不随FD数目增加而线性下降

  worker_connections  65535; 如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式:
   最大连接数 = worker_processes * worker_connections/4
查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。

}
sendfile        on;
    tcp_nopush     on;
    tcp_nodelay       on;     

    keepalive_timeout  60;
#开启压缩
    gzip  on;
    gzip_min_length 1k; 
    gzip_buffers     4 16k; 
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;  
    
    proxy_buffer_size        16k;
    proxy_buffers            4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;







日志格式
log_format json '{"@timestamp":"$time_iso8601",'
                        '"@version":"1",'
                        '"host":"$server_addr",'
                        '"client":"$remote_addr",'
                        '"upAddr":"$upstream_addr",'
                        '"size":$body_bytes_sent,'
                        '"responsetime":$request_time,'
                        '"domain":"$host",'
                        '"url":"$uri",'
                        '"status":"$status"}';
access_log  /var/log/nginx/access.log  json;


做代理:
location / {
        proxy_pass http://*.*.*;
#代理
        proxy_set_header Host $host;
# Host” header设置为$host变量,其中包含了原始的请求主机信息。
        proxy_set_header X-Real-IP $remote_addr;                   
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#后端获取真实ip
        proxy_set_header X-Forwarded-Proto $scheme;   
# X-Forwarded-Proto header为代理服务器提供了原始请求的schema信息(http或https请求)。                
        proxy_cookie_path / /;
        proxy_set_header Cookie $http_cookie;
#设置cookie
        }
红色标记必须带上。



猜你喜欢

转载自www.cnblogs.com/liandeng/p/9550387.html