nginx生产配置文件,已做优化,可供大家参考。
cat /etc/nginx/nginx.conf
user www;
# worker_processes auto; (推荐)
worker_processes 4;
# worker_cpu_affinity auto; (推荐)
# 通过增加worker_cpu_affinity配置参数来充分利用多核cpu
worker_cpu_affinity 0001 0010 0100 1000;
# 8个cpu是下面这种写法
# worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
error_log /data/nginx/logs/error.log notice;
pid /var/run/nginx.pid;
# 用于实现nginScript中的位置和变量处理程序,JavaScript语言的一个子集。
# 此模块不是默认生成的,它应该使用--add-module配置参数与nginScript模块一起编译:
# 需要安装模块,不需要的话就注释掉
load_module modules/ngx_http_js_module.so;
# worker进程最大打开文件数
worker_rlimit_nofile 131070;
events {
# 单个后台worker process进程的最大并发链接数
worker_connections 65535;
# epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;
}
http {
client_body_timeout 30s; # 指定等待client发送一个请求头的超时时间
client_header_timeout 30s; # 设置请求正文即请求体(request body)的读超时时间
send_timeout 60s; # 设置将响应传输到客户端的超时
limit_conn_zone $binary_remote_addr zone=one:10m; # 限制并发数,$binary_remote_addr是限制同一客户端ip地址;
limit_conn_zone $server_name zone=perserver:10m; # 限制并发数,$server_name是限制同一server最大并发数
limit_conn one 100; # 限制下载带宽,limit_conn为限制并发连接数
limit_conn perserver 200; # 限制下载带宽,limit_conn为限制并发连接数
limit_rate 300k; # 限制下载带宽,limit_rate为限制下载速度;
server_names_hash_bucket_size 128; #配置多个 server 虚拟主机,所必需
# prometheus监控,自主选择模块
js_import /usr/share/nginx-plus-module-prometheus/prometheus.js;
variables_hash_max_size 4096; # 哈希表的最大值
variables_hash_bucket_size 2048; # 哈希表的最大值
# 设定mime类型,类型由mime.type文件定义,
include mime.types;
default_type application/octet-stream;
# 设定日志格式
log_format main_json escape=json '{"datetime":"$time_iso8601",'
'"remote_addr":"$remote_addr",'
'"request":"$request",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"http_referer":"$http_referer",'
'"request_length":"$request_length",'
'"http_host":"$http_host",'
'"status":"$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"upstream_addr":"$upstream_addr",'
'"upstream_status":"$upstream_status",'
'"upstream_http_content_type":"$upstream_http_content_type",'
'"upstream_response_time":"$upstream_response_time",'
'"server_port":"$server_port"'
'}';
access_log /data/nginx/logs/access.log main_json;
sendfile on; # 指令指定 nginx 是否调用 sendfile 函数处理文件,必须为on
tcp_nopush on; # 它可以配置一次发送数据的包大小
###############
# 基础代理设置
autoindex off; # Nginx默认是不允许列出整个目录的。如需此功能,加上
server_tokens off; # 隐藏版本号
keepalive_timeout 75s; # 连接超时时间
keepalive_requests 1500; # 设置一个keep-alive连接上可以服务的请求的最大数量
#指定一个连接到代理服务器的超时时间,单位为秒。默认为60秒,最好不要超过75秒
proxy_connect_timeout 20s;
#决定读取后端服务器应答的超时时间,单位为秒。默认为60秒,最好不要超过75秒
proxy_read_timeout 60s;
proxy_send_timeout 60s;
#确定在何种情况下请求将转发到下一个服务器,默认为:error timeout。为了避免重复提交,如果设置为off,后端节点停止掉会部分报错;建议设置为:error
proxy_next_upstream error;
# 解决http 499错误
proxy_ignore_client_abort on;
###############
###############
gzip on; # 默认压缩配置
gzip_min_length 2k; # 小于2k的不压缩
gzip_proxied any; # 无条件压缩
gzip_comp_level 4; # 压缩级别1~9,越高压缩越小CPU资源消耗越多
gzip_buffers 16 8k; # 存储压缩结果数据流,以8k为单位,向内存申请16倍
# 压缩MIME类型,可参考conf/mime.types
gzip_types application/json image/svg+xml text/plain text/xml text/css text/javascript application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript application/x-font-ttf application/vnd.ms-fontobject font/opentype font/ttf font/eot font/otf;
underscores_in_headers on; # 允许header变量包含下划线
###############
###############
# 配置默认代理设置
client_max_body_size 100m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering on;
###############
include /data/nginx/conf.d/*.conf;
}