Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,提供以下核心功能: - 可视化配置反向代理、负载均衡 - 自动SSL证书申请与续期(Let's Encrypt) - 访问控制与基本认证 - 流量分析与日志查看
典型配置示例:
upstream node_app {
server 127.0.0.1:3000;
keepalive 64;
}
server {
location / {
proxy_pass http://node_app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
优化建议: - 启用HTTP/2支持 - 配置WebSocket代理 - 设置合理的keepalive超时(建议60-75秒)
典型配置:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
优化要点:
- 确保X-Forwarded-*
头正确传递
- 静态文件直接由Nginx处理:
location /static/ {
alias /path/to/static/files;
expires 30d;
access_log off;
}
- 启用Gzip压缩
关键配置:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
优化建议: - 配置OPcache - 启用HTTP/2 - 设置合理的客户端缓存头
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
proxy_cache_use_stale error timeout updating;
}
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384...';
ssl_prefer_server_ciphers on;
http {
keepalive_timeout 65;
keepalive_requests 100;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
server_tokens off;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
location /api/ {
limit_req zone=one burst=20 nodelay;
}
client_body_timeout 10;
client_header_timeout 10;
reset_timedout_connection on;
client_body_buffer_size 128K;
client_header_buffer_size 1k;
client_max_body_size 10m;
large_client_header_buffers 4 4k;
502 Bad Gateway错误
SSL证书问题
性能瓶颈
worker_connections
设置多应用路由配置
location /app1/ {
proxy_pass http://app1_backend/;
}
location /app2/ {
proxy_pass http://app2_backend/;
}
WebSocket支持
location /ws/ {
proxy_pass http://ws_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
灰度发布配置
split_clients "${remote_addr}${http_user_agent}" $variant {
50% "production";
50% "staging";
}
location / {
proxy_pass http://$variant;
}
通过合理配置Nginx Proxy Manager与Web应用框架的集成,可以显著提升应用性能、安全性和可维护性。建议根据实际应用场景选择最适合的优化策略。