user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 65535;
        multi_accept on;
    }

http
    {
        include       mime.types;

        include proxy.conf;
        # proxy.conf匹配如下:
proxy_temp_path /www/server/nginx/proxy_temp_dir;
proxy_cache_path /www/server/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:20m inactive=1d max_size=5g;
client_body_buffer_size 25m;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_cache cache_one;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;
        keepalive_timeout 60;
        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
        fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length 1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";
        # 限流匹配,注意使用IP限流时,要使用real_ip模块获取用户真实IP地址,以免CDN被整体限流
        limit_conn_zone $binary_remote_addr zone=perip:10m;
        limit_conn_zone $server_name zone=perserver:10m;
  
        server_tokens off;
        access_log off;

server
    {
...
# 限流匹配
    limit_conn perserver 300;
    limit_conn perip 25;
    limit_rate 512k;

    ssl_certificate    /www/fullchain.pem;
    ssl_certificate_key    /www/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
...
}
}

event段:
这段配置是用来优化 Nginx 的性能和并发处理能力的。它位于 events 块中,主要用于控制 Nginx 处理连接的方式。下面是各项配置的作用:

use epoll;: 指定 Nginx 使用 epoll 作为事件处理机制。这是一种高效的 I/O 多路复用技术,适用于 Linux 系统,可以处理大量的并发连接。相比于其他事件处理机制(如 select 和 poll),epoll 在处理大量并发连接时性能更好。

worker_connections 65535;: 设置每个 Nginx 工作进程可以同时处理的最大连接数。这个值决定了单个工作进程的最大并发连接数。设置为 65535 表示每个工作进程可以处理最多 65535 个连接。这对于高流量网站或需要处理大量并发请求的场景很有用。

multi_accept on;: 允许 Nginx 在每个事件循环中接受多个连接。默认情况下,Nginx 每次事件循环只接受一个新连接。启用 multi_accept 可以让 Nginx 更高效地处理新连接,尤其是在高并发的环境中,这有助于减少延迟和提高处理能力。

总的来说,这些设置旨在提高 Nginx 的并发处理能力和性能,特别是在高负载和高并发的环境中。

http 段:
这些配置项用于优化 Nginx 的性能,特别是在处理文件传输和保持长连接方面:

sendfile on;: 启用 sendfile 系统调用,允许 Nginx 直接在文件系统中将文件传输到网络套接字,而无需将数据从内核空间拷贝到用户空间。这可以提高文件传输的效率,减少 CPU 使用率。

tcp_nopush on;: 在使用 sendfile 时,启用 TCP_NOPUSH 标志,直到整个文件数据准备好再发送。这有助于减少小数据包的发送,优化大文件的传输性能。

keepalive_timeout 60;: 设置保持连接的超时时间为 60 秒。这意味着在客户端与服务器之间保持持久连接的时间。如果客户端在 60 秒内没有发送新请求,连接将被关闭。这有助于减少建立和拆除连接的开销,同时避免长时间保持闲置连接。

tcp_nodelay on;: 启用 TCP_NODELAY 标志,禁用 Nagle 算法。Nagle 算法会延迟小的数据包的发送以减少网络拥塞,但启用 TCP_NODELAY 可以确保数据包立即发送,从而减少延迟,适合需要快速响应的应用场景。

这些设置有助于提高文件传输的效率、减少延迟,并优化长期连接的性能。

真实IP获取:real_ip模块
https://blog.qqvbc.com/default/1101.html

标签: none

添加新评论