1. 增加worker_processes 可以通过增加worker_processes的数量来提高并发处理能力。worker_processes代表nginx的worker进程数量。一般来说,合理的worker_processes数量是与CPU核心数一致或者略多一些。 例如,如果服务器有16个CPU核心,则可以设置worker_processes为16或者18。 ``` worker_processes 16; ``` 2. 调整worker_connections worker_connections代表一个worker进程所能开启的最大连接数。这个参数的大小直接影响到nginx的最大并发数。 我们可以通过以下命令查看系统最大的打开文件数:ulimit -n。 通常来说,可以将worker_connections的值设置为系统最大打开文件数的一半,或者稍微多一些。 例如: ``` worker_connections 65535; ``` 3. 配置keepalive 使用keepalive可以将一个请求的多个资源放在同一个TCP连接中传输,从而减少连接数,提高性能。 可以通过以下配置来开启keepalive: ``` keepalive_timeout 65; keepalive_requests 100; ``` 其中,keepalive_timeout代表keepalive连接的最大超时时间(以秒为单位)。keepalive_requests代表每个连接最多能接受的请求次数。 4. 负载均衡配置 使用负载均衡可以将请求分发到多个服务器上,从而提高并发能力。nginx提供了多种负载均衡方式,包括轮询、IP hash等。 例如: ``` upstream backend { server 192.168.0.10:80; server 192.168.0.11:80; server 192.168.0.12:80; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } } ``` 在上面的例子中,我们定义了一个名为backend的upstream,包含了三个服务器。在http请求中,我们通过proxy_pass指令将请求转发到upstream中。 5. 缓存配置 缓存可以将服务器返回的数据缓存到本地,从而减少服务器的负担,提高响应速度。可以通过以下配置开启nginx缓存: ``` proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m inactive=60m; proxy_cache_key "$host$request_uri"; proxy_cache_valid 200 304 1h; proxy_cache_bypass $http_pragma; ``` 在上面的例子中,我们使用了proxy_cache_path指令来定义缓存路径,并设置了缓存key的格式。proxy_cache_valid指令用来设置缓存的有效时间。 6. TLS优化 如果网站启用了TLS加密,可以尝试通过以下方式优化TLS性能: 1) 使用TLSv1.3协议,该协议有更高的加密效率和更低的延迟。 2) 开启OCSP Stapling,该功能可以减少TLS握手时验证证书的开销。 3) 开启Session Resumption,该功能可以复用之前的TLS连接,从而减少握手开销。 4) 开启TCP Fast Open,该功能可以减少TCP连接建立的延迟。 ``` ssl_protocols TLSv1.3; ssl_stapling on; ssl_stapling_verify on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1h; ssl_session_tickets on; ssl_session_ticket_key /etc/nginx/ssl/session_ticket.key; tcp_fastopen on; ```