
nginx配置详解、端口重定向和504
在 Nginx 配置文件中,添加: 在
发布日期:2025-04-20 23:32:19
浏览次数:4
分类:精选文章
本文共 4496 字,大约阅读时间需要 14 分钟。
Nginx 配置详解与常见问题解决方案
作为高性能的反向代理服务器,Nginx 的配置对服务器性能和稳定性有着重要影响。本文将详细介绍 Nginx 配置文件的各项功能模块,并提供针对常见问题的解决方案。
1. 用户和组的设置
user www www;
该配置项指定了 Nginx 运行的用户和用户组,通常建议将其设置为 www
用户,用于限制 Nginx 运行权限,防止配置文件被篡改。
2. 进程数和文件描述符
worker_processes 8;worker_rlimit_nofile 65535;
- worker_processes:建议设置为等于 CPU 核心数。例如,8 核机器设置为 8。
- worker_rlimit_nofile:设置文件描述符的最大数量。通常建议与系统
ulimit -n
保持一致。
3. 工作模式与连接数上限
events { use epoll; worker_connections 65535;}
- use epoll:启用 epoll 模型,适用于 Linux 2.6 及以上版本,提供高性能的网络 I/O 处理。
- worker_connections:单个进程的最大连接数,最大连接数为连接数乘以进程数。
4. HTTP 服务器配置
http { include mime.types; default_type application/octet-stream; charset utf-8; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 64k; client_max_body_size 8m; sendfile on; autoindex on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 120;}
- include mime.types:包含 MIME 类型映射文件。
- default_type:默认文件类型。
- charset utf-8:默认字符编码。
- sendfile on:启用 sendfile 指令,提升文件传输效率。
- autoindex on:启用目录索引,适用于下载服务器。
- keepalive_timeout 120:长连接超时时间,单位为秒。
5. FastCGI 相关参数
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 128k;
- fastcgi_connect_timeout:连接超时。
- fastcgi_send_timeout:发送超时。
- fastcgi_read_timeout:读取超时。
- fastcgi_buffer_size:缓冲区大小。
- fastcgi_buffers:多个缓冲区,提高并发处理能力。
- fastcgi_busy_buffers_size:高负载下的缓冲区大小。
- fastcgi_temp_file_write_size:临时文件写入大小。
6. Gzip 模块
gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.0;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;
- gzip on:启用 Gzip 压缩。
- gzip_min_length:最小压缩文件大小。
- gzip_buffers:压缩缓冲区。
- gzip_http_version:压缩协议版本。
- gzip_comp_level:压缩等级,2 为最优。
- gzip_types:压缩类型,包含常见文件格式。
- gzip_vary on:启用压缩变量,避免重复内容。
7. 虚拟主机配置
server { listen 80; server_name ha97.com; index index.html index.htm index.php; root /data/www/ha97; location ~ .*.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 10d; } location ~ .*.(js|css)?$ { expires 1h; }}
- server_name ha97.com:定义虚拟主机域名。
- root /data/www/ha97:指定服务静态文件目录。
- location ~ .*.(php|php5)?$:处理 PHP 请求,通过 FastCGI代理。
- location ~ .*.(gif|jpg|...)$:设置静态资源缓存时间。
- location ~ .*.(js|css)?$:设置 JavaScript 和 CSS 缓存时间。
8. 日志格式设定
log_format access '$remote_addr - $remote_user [$time_local] "$request" "$status" $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for';access_log ar/loginx/ha97access.log access;
- log_format:定义日志格式。
- access_log:指定访问日志文件和格式。
9. 动静分离反向代理
location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file confpasswd;}location / { proxy_pass ""; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;}
- proxy_pass "":启用反向代理。
- proxy_set_header:设置头部字段,支持 X-Forwarded-For 等。
- client_max_body_size:限制请求体大小。
- proxy_connect_timeout:代理连接超时。
- proxy_send_timeout:代理发送超时。
- proxy_read_timeout:代理读取超时。
- proxy_buffer_size:设置缓冲区大小。
- proxy_buffers:多个缓冲区,提升并发处理能力。
- proxy_busy_buffers_size:高负载下的缓冲区大小。
- proxy_temp_file_write_size:临时文件写入大小。
10. 常见问题解决方案
1. 端口重定向
默认 Nginx 端口为 80。如果需要将其重定向为 8000 等端口,可执行以下操作:
port_in_redirect off;
server
块中,将 Host $host;
修改为 Host $host:端口号;
2. 504 Gateway Time-out
解决方式来自:jingyan.baidu.com/article/6fb756ecbf4774241858fb9a.html
-
情况1:由于 Nginx 默认的 FastCGI 进程响应缓冲区太小造成的问题。
解决方法:
- 修改 Nginx 配置文件,加入:
fastcgi_buffers 8 128k;
- 可以继续调大 Send 和 Read 超时时间,例如设置为 60 秒。
- 修改 Nginx 配置文件,加入:
-
情况2:PHP 环境配置问题。
解决方法:
- 修改
php-fpm
的max_children
为 30,提高处理效率。 - 修改
request_terminate_timeout
为 60 秒,防止进程被挂起。 - 调整 Nginx 配置,例如将
fastcgi_buffers
由 4 64k 改为 2 256k。
- 修改
3. 网络阻塞问题
针对通过 Nginx 转发的 JS 和 CSS,出现 net::ERR_INCOMPLETE_CHUNKED_ENCODING
的问题:
- 原因1:缓存池较小。可通过设置缓存大小调整:
fastcgi_buffers 8 128k; fastcgi_buffer_size 128k;
- 原因2:缓存文件访问权限问题。可执行:
chown -R nobody:nobody proxy_temp/
总结
通过合理配置 Nginx,可以显著提升服务器性能和稳定性。本文详细介绍了 Nginx 配置的各项功能模块,并提供了针对常见问题的解决方案。
发表评论
最新留言
很好
[***.229.124.182]2025年04月27日 22时58分20秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!