标准化:
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
}
红色标记必须带上。