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;
    }