nginx配置文件优化

本文详细介绍了如何优化Nginx的配置以提高并发处理能力,包括设置worker_processes、worker_connections以及优化内存缓存。同时,针对安全性进行了设置,如限制并发量、隐藏版本号、关闭WebDAV、防止页面被嵌套等。此外,还涉及了SSL证书配置、CORS设置以及代理服务器的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


user nginx;
worker_processes 8;
error_log /var/log/nginxerror.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
#include /usr/share/nginx/modules/*.conf;

#优化Nginx并发量
#worker_processes 8;    #与CPU核心数量一致
events {
    worker_connections 1024;    #每个worker最大并发连接数
}

http {
    #隐藏具体的版本号
    server_tokens off; 

    #对页面进行压缩处理
    #gzip on;                          #开启压缩
    #gzip_min_length 1000;             #小文件不压缩
    #gzip_comp_level 4;                #压缩比率
    #对特定文件压缩,类型参考mime.types
    #gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
                                    
    #服务器内存缓存,处理大量静态文件,可以将文件缓存在内存
    #设置服务器最大缓存2000个文件句柄,关闭20秒内无请求的文件句柄
    #文件句柄的有效时间是60秒,60秒后过期
    #只有访问次数超过5次会被缓存
    #open_file_cache          max=2000  inactive=20s;
    #open_file_cache_valid    60s;
    #open_file_cache_min_uses 5;
    #open_file_cache_errors   off;

    #防止buffer溢出
    client_body_buffer_size  1K;
    client_max_body_size 1M;
    #优化Nginx数据包头缓存
    client_header_buffer_size    1k;        #默认请求包头信息的缓存    
    large_client_header_buffers  4 4k;      #大请求包头部信息的缓存个数与容量

    #限制并发量
    #将客户端IP信息存储名称为one的共享内存,内存空间为10M
    #10M可以存储8万个主机连接的状态,容量可以根据需要任意调整
    #每秒中仅接受1个请求,多余的放入漏斗
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginxaccess.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include              /data/nginx/conf/mime.types;
    #default_type        application/octet-stream;


    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    #include /etc/nginx/conf.d/*.conf;
    server {
        listen       44444 ssl;
        server_name  localhost;

        ssl_certificate "/data/nginx/ssl/nginx.crt";  
        ssl_certificate_key "/data/nginx/ssl/nginx_nopass.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        #nginx关闭WebDav,只放通GET和POST,放置于server中
        #!~* 不区分大小写不匹配
        if ($request_method !~* GET|POST) {
            return 403;
        }

        #防止该网站页面被其他网站嵌套
        add_header X-Frame-Options "SAMEORIGIN";
        
        #同上限制并发量,漏斗为20
        limit_req zone=one burst=20;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location /api {
            rewrite ^.+api/?(.*)$ /$1 break; 
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' '*'; 
            proxy_pass http://192.168.1.111:8100/;  #代理的域名
        }
        location  / {
            root   html/mobile/dist;
            index  index.html index.htm;
        }
        
        #浏览器本地缓存静态数据
        #location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
        #    expires        30d;            #定义客户端缓存时间为30天
        #}
    }


    server {
        listen       33333 ssl;
        server_name  localhost;

        ssl_certificate "/data/nginx/ssl/nginx.crt";
        ssl_certificate_key "/data/nginx/ssl/nginx_nopass.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        #nginx关闭WebDav,只放通GET和POST,放置于server中
        #!~* 不区分大小写不匹配
        if ($request_method !~* GET|POST) {
            return 403;
        }

        #防止该网站页面被其他网站嵌套
        add_header X-Frame-Options "SAMEORIGIN";

        #同上限制并发量,漏斗为20
        limit_req zone=one burst=20;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location /api {
            rewrite ^.+api/?(.*)$ /$1 break;
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' '*';
            proxy_pass proxy_pass http://192.168.1.222:8100/;   #代理的域名
        }
        location  / {
            root   html/vueswiftops/dist;
            try_files $uri $uri/ @router; # 配置使用路由
            index  index.html index.htm;
        }

        # 路由配置信息
        location @router {
          rewrite ^.*$ /index.html last; #接收到截取的url 并按一定规则重写rul和vue路由跳转
        }

    }


}


 

<think>好的,我现在需要处理用户关于Nginx配置文件详解与性能优化的查询。首先,我得仔细分析用户的需求。用户提到了“详细说明”和“性能优化最佳实践”,所以需要涵盖这两个方面。同时,用户提供的引用内容中有五个引用来源,我需要确保在回答中正确引用这些资料。 首先,我应该先梳理Nginx配置文件的基本结构。根据引用[2]和[4],配置文件通常分为全局块、events块和http块,每个部分有不同的配置项。需要详细说明每个部分的作用,比如worker_processes和worker_connections这些关键参数。这部分需要结合引用[4]提到的全局配置内容。 接下来是性能优化部分。用户提到的引用[1]和[5]都涉及性能优化,比如gzip压缩、负载均衡和缓存设置。我需要将这些优化方法分门别类,比如全局优化、HTTP优化、静态资源处理等。每个优化点需要给出具体的配置示例,比如调整worker_processes为auto,设置gzip on等,并解释这些配置的作用和推荐值。 然后要考虑安全加固,这部分引用[1]和[2]都有提及。需要包括隐藏版本号、限制请求方法、设置超时时间等安全相关的配置。此外,负载均衡和反向代理的配置也是重点,引用[1]和[3]提到Nginx在这方面的应用,需要给出upstream和proxy_pass的配置示例。 用户可能还需要知道如何验证和重新加载配置,这部分引用[5]提到了重新加载的命令,需要包含nginx -t和nginx -s reload。此外,配置文件的组织和管理也是一个重要点,比如使用include语句分割配置文件,保持结构清晰,引用[2]和[4]都提到了配置文件的结构设计。 在组织回答时,需要结构清晰,分点说明,每个部分用小标题标出,比如配置文件结构、性能优化、安全加固等。同时,要确保所有的LaTeX公式和代码块符合格式要求,比如行内公式用$...$,独立公式用$$...$$,代码块用三个反引号包裹。注意检查是否有语法错误,比如是否正确转义特殊字符。 最后,生成相关问题时要围绕用户的问题展开,考虑用户可能进一步想知道的内容,比如如何实现动静分离、SSL优化方法、常见配置错误排查等。确保问题与Nginx配置和优化相关,并且有逻辑连贯性。 现在需要检查是否所有引用都正确标注,比如引用[1]到[5]是否在回答中正确对应。例如,在提到性能优化时引用[1]和[5],在配置文件结构时引用[2]和[4]。同时,确保没有遗漏用户提供的任何引用内容,并且引用标识自然插入在相关内容末尾。 还需要确认是否所有的配置示例都正确无误,比如gzip配置部分是否与引用[5]中的代码示例一致。此外,安全加固部分提到的隐藏版本号在引用[1]中有涉及,需要正确标注。 最后,通读整个回答,确保语言流畅,符合中文表达习惯,没有格式错误,并且严格遵守用户提供的系统级指令,如LaTeX格式、代码块使用等。确保问题部分生成的相关问题具有针对性和实用性,能够帮助用户深入理解Nginx配置和优化的各个方面。</think>### Nginx配置文件详解与性能优化最佳实践 #### 一、配置文件核心结构 Nginx配置文件采用模块化设计,主要包含三个层级: ``` $$nginx # 全局配置块(主上下文) user nginx; # 进程运行身份 worker_processes auto; # 工作进程数[^4] error_log /var/log/nginx/error.log warn; # 错误日志 events { # 事件模块配置 worker_connections 1024; # 单进程最大连接数 use epoll; # 事件驱动模型 } http { # HTTP服务配置 include /etc/nginx/mime.types; # 其他HTTP模块配置 server { # 虚拟主机配置 listen 80; # 服务器级配置 } } $$ ``` #### 二、性能优化关键配置 1. **全局优化** ```nginx worker_processes auto; # 自动匹配CPU核心数 worker_cpu_affinity auto; # CPU亲和性绑定 worker_rlimit_nofile 65535; # 文件描述符限制 ``` 2. **HTTP优化** ```nginx http { sendfile on; # 零拷贝技术[^5] tcp_nopush on; # 数据包合并优化 keepalive_timeout 65; # 长连接超时 gzip on; # 压缩传输优化[^5] gzip_comp_level 5; # 压缩级别(1-9) } ``` 3. **静态资源处理** ```nginx location ~* \.(jpg|png|css|js)$ { expires 30d; # 缓存控制 access_log off; # 日志优化 open_file_cache max=1000 inactive=20s; # 文件缓存[^2] } ``` #### 三、安全加固配置 ```nginx server_tokens off; # 隐藏版本号[^1] client_max_body_size 10m; # 限制上传大小 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 请求频率限制 ``` #### 四、负载均衡配置 ```nginx upstream backend { least_conn; # 最小连接算法[^3] server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080; } server { location / { proxy_pass http://backend; proxy_set_header Host $host; # 反向代理配置[^3] } } ``` #### 五、配置验证与重载 ```bash $ nginx -t # 测试配置语法 $ nginx -s reload # 热重载配置[^5] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值