本文共 3713 字,大约阅读时间需要 12 分钟。
Nginx是高性能的HTTP和反向代理服务器,也是一种IMAP/POP3邮件代理服务器,支持热部署、负载均衡、虚拟主机和SSL。以下是关于Nginx配置文件详解的内容。
Nginx的主配置文件通常位于/etc/nginx/nginx.conf,在源码包编译后位于/usr/local/nginx/conf/nginx.conf。以下是配置文件的主要部分和结构:
user nobody nobody;:定义运行Nginx服务的用户和组。worker_processes 2;:定义Nginx子进程数量,建议与CPU核数保持一致。error_log /usr/local/nginx/logs/nginx_error.log crit;:定义错误日志路径和级别。pid /usr/local/nginx/logs/nginx.pid;:定义Nginx进程ID文件路径。worker_rlimit_nofile 51200;:定义Nginx最多打开文件数限制。events { use epoll; worker_connections 1024; }:定义事件驱动模型和最大连接数。include mime.types;:包含媒体类型文件。default_type application/octet-stream;:默认媒体类型。sendfile on;:启用sendfile功能,提升性能。tcp_nopush on;:优化网络传输。keepalive_timeout 30;:定义HTTP/1.1会话超时。client_max_body_size 10m;:限制客户端上传文件大小。gzip on;:启用Gzip压缩。gzip_min_length 1k;:定义Gzip压缩的最小文件大小。gzip_comp_level 6;:定义Gzip压缩级别。server { listen 80; server_name localhost; }:定义虚拟主机,监听80端口。location / { root /usr/local/nginx/html; index index.html index.htm; }:定义默认访问路径和索引文件。location ~ .php$ { proxy_pass http://127.0.0.1:9000; }:代理PHP脚本请求到PHP-FPM服务器。fastcgi_intercept_errors on;:捕获PHP错误并返回友好响应。sendfile_max_chunk 128k;:定义sendfile传输最大块大小。client_header_buffer_size 1k;:定义HTTP头缓冲大小。全局配置:
user nobody nobody;:设置Nginx运行的用户和组,通常为nginx用户和组。worker_processes 2;:根据服务器负载调整子进程数量,建议与CPU核数一致。error_log /usr/local/nginx/logs/nginx_error.log crit;:设置错误日志路径和级别,crit级别记录关键错误。pid /usr/local/nginx/logs/nginx.pid;:指定Nginx进程ID文件路径。事件配置:
events { use epoll; worker_connections 1024; }:使用epoll事件驱动模型,允许最多1024个连接。HTTP配置:
include mime.types;:包含系统默认的媒体类型文件,定义服务器支持的文件类型。default_type application/octet-stream;:默认媒体类型为application/octet-stream。sendfile on;:启用sendfile功能,减少用户态和内核态切换,提升性能。tcp_nopush on;:在发送数据时使用tcp_cork方法,减少网络阻塞。keepalive_timeout 30;:定义HTTP/1.1会话超时,30秒为常见设置。client_max_body_size 10m;:限制客户端上传文件大小,避免413错误。gzip on;:启用客户端Gzip压缩,提升数据传输效率。gzip_min_length 1k;:定义Gzip压缩的最小文件大小,避免小文件压缩。gzip_comp_level 6;:定义Gzip压缩级别,6为常见设置,兼顾压缩率和速度。服务器配置:
server { listen 80; server_name localhost; }:定义虚拟主机,监听80端口,域名为localhost。location / { root /usr/local/nginx/html; index index.html index.htm; }:定义默认访问路径,根目录为/usr/local/nginx/html,索引文件为index.html和index.htm。location ~ .php$ { proxy_pass http://127.0.0.1:9000; }:定义PHP脚本代理,代理到本地PHP-FPM服务器,端口为9000。高级配置:
fastcgi_intercept_errors on;:在代理PHP请求时,捕获错误信息并返回友好响应,避免502错误页。sendfile_max_chunk 128k;:定义sendfile传输的最大块大小,建议根据网络带宽调整。client_header_buffer_size 1k;:定义HTTP头部缓冲大小,避免缓存问题。以下是一个示例的Nginx配置文件:
user nobody nobody;worker_processes 2;error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;events { use epoll; worker_connections 1024;}http { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; keepalive_timeout 30; client_max_body_size 10m; gzip on; gzip_min_length 1k; gzip_comp_level 6; server { listen 80; server_name localhost; location / { root /usr/local/nginx/html; index index.html index.htm; } location ~ .php$ { proxy_pass http://127.0.0.1:9000; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location /50x.html { root /usr/local/nginx/html; } # 其他配置... }} 日志配置:
error_log级别,error_log /usr/local/nginx/logs/nginx_error.log debug;以获取更多日志信息。性能优化:
worker_rlimit_nofile,根据系统内存调整文件限制。worker_connections,根据负载增加连接数。安全配置:
access_log logs/access.log main;。-配置访问控制列表(ACL),限制某些IP访问。高级功能:
ngx_http_realip_module,配置反向代理IP。ngx_http_headers_module,自定义HTTP头。负载均衡:
proxy_balance和proxy_pass实现反向代理负载均衡。通过以上配置和优化,可以更好地实现Nginx的高性能和稳定性,适用于Web服务器、反向代理、邮件代理等场景。
转载地址:http://ercfk.baihongyu.com/