Nginx 是一种高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,它由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发,源代码以类BSD许可证的形式发布,自 Nginx 问世以来,它因为占用内存少、稳定性高、支持高并发等特点而广受欢迎,以下是一些优化 Nginx 服务器的方法:
1. 调整 worker 进程数
Nginx 通过 worker 进程处理并发连接,合理的 worker 进程数可以提高服务器性能,worker 进程数通常设置为 CPU 核心数,可以通过以下命令查看 CPU 核心数:
cat /proc/cpuinfo | grep processor | wc l
然后在nginx.conf
中设置:
worker_processes auto;
2. 调整 worker_connections
每个 worker 进程可以同时开启的连接数,Nginx 作为反向代理,这个值可能需要增大,
worker_connections 1024;
3. 开启 GZIP 压缩
开启 GZIP 可以减少传输的数据量,提高页面加载速度,在http
配置块中添加:
gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
4. 调整 keepalive_timeout
长连接可以减少建立连接的开销,提高性能,在http
配置块中设置:
keepalive_timeout 65;
5. 使用缓存
Nginx 提供了多种缓存机制,如 proxy_cache、memcached_module 等,合理使用缓存可以减少后端服务器的压力。
6. 使用负载均衡
Nginx 支持多种负载均衡策略,如轮询(默认)、最少连接、IP 哈希等,可以根据实际需求选择合适的策略。
7. 优化日志格式
减少不必要的日志记录,可以降低磁盘 I/O。
log_format myformat '$remote_addr $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; access_log /var/log/nginx/access.log myformat;
8. 限制请求速率
为了防止恶意请求,可以限制客户端的请求速率。
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
然后在location
中使用:
limit_req zone=mylimit burst=20 nodelay;
9. 使用 HTTP/2
HTTP/2 相比 HTTP/1.1 有很多改进,如多路复用、头部压缩等,在server
配置块中启用:
listen 443 ssl http2;
相关问题与解答
Q1: Nginx 如何实现动静分离?
A1: Nginx 可以通过配置实现动静分离,将静态文件(如图片、CSS、JS)直接由 Nginx 处理,而动态请求则转发给后端应用服务器,具体做法是在配置文件中分别定义静态文件和动态请求的location
,并设置相应的处理方式。
location /static { alias /var/www/static; } location / { proxy_pass http://backend; }
Q2: Nginx 如何实现反向代理?
A2: Nginx 可以通过配置实现反向代理,将客户端的请求转发给后端服务器,并将后端服务器的响应返回给客户端,具体做法是在配置文件中设置proxy_pass
指令。
location / { proxy_pass http://backend; }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/920397.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复