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