Nginx 反向代理配置实战:一台服务器运行 10+ 网站
核心就三点: 按域名分发 — 所有流量走 443, 2. WebSocket 支持 如果后端用 WebSocket(如实时通知)。
基础架构 代码语言: javascript 复制 互联网 → Nginx(443) → ├─ blog.rmzdb.cloud → 127.0.0.1:8080 (PHP)├─ music.rmzdb.cloud → 127.0.0.1:3001 (Node.js)├─ api.rmzdb.cloud → 127.0.0.1:9020 (Spring Boot)└─ admin.rmzdb.cloud → /var/www/admin (静态) 多站点 Nginx 配置 以通配符 SSL 证书为例: 代码语言: javascript 复制 # SSL 基础配置ssl_certificate /root/.acme.sh/*.rmzdb.cloud_ecc/fullchain.cer;ssl_certificate_key /root/.acme.sh/.rmzdb.cloud_ecc/.rmzdb.cloud.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;ssl_prefer_server_ciphers on;安全头add_header Strict-Transport-Security max-age=63072000 always;add_header X-Frame-Options SAMEORIGIN always;add_header X-Content-Type-Options nosniff always; 配完好就可以按域名分发: 代码语言: javascript 复制 server {listen 443 ssl http2;server_name blog.rmzdb.cloud;root /var/www/blog;location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi_params;}}server {listen 443 ssl http2;server_name music.rmzdb.cloud;location / {proxy_pass :3001;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}location /api {proxy_pass :3001;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}} 关键配置技巧1. 代理头必须设 代码语言: javascript 复制 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; 不设这些头,日志分析和 IP 限流全部失效,CPU 几乎无感,保护后端: 代码语言: javascript 复制 limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;location /api {limit_req zone=api_limit burst=20 nodelay;proxy_pass :3001;} 自动化 SSL 证书 用 acme.sh 申请通配符证书。
Java 跑在 8080, Nginx 反向代理配置实战:一台服务器运行 10+ 网站 在有限的服务器资源下,一次配置覆盖所有子域名: 代码语言: javascript 复制 acme.sh --issue --dns dns_ali -d rmzdb.cloud -d *.rmzdb.cloud 自动续期: 代码语言: javascript 复制 acme.sh --install-cert -d rmzdb.cloud \ --key-file /etc/nginx/ssl/rmzdb.cloud.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd systemctl reload nginx 日志与监控 分离每个站点的访问日志,欢迎在评论区交流你的配置经验, 为什么需要反向代理? 当你只有一台 2C2G 的轻量云服务器, 。
问题来了: Node.js 跑在 3000 端口,Nginx 按 server_name 转发 代理头传全 — Host、IP、协议一个不能少 安全加固 — HTTPS 强制、速率限制、安全头一步到位 这套配置已经稳定运行数月,如何通过 Nginx 反向代理同时托管博客、音乐站、API 服务、监控面板等十多个站点?本文分享实际生产环境中的配置经验,按域名分发到后端服务,PHP 跑在 9000 每个服务都要配 SSL 证书? 用户访问还得记住端口号? 答案是 Nginx 反向代理 — 所有流量走 443 端口, --- 如果你也在用一台服务器跑多个服务,后端拿到的永远是 127.0.0.1,方便排查: 代码语言: javascript 复制 access_log /var/log/nginx/blog-access.log;error_log /var/log/nginx/blog-error.log; 实时监控工具推荐: tail -f 看实时请求 goaccess 生成访问报告 ngxtop 实时请求分析 总结 一台服务器跑十个网站,却要运行 Node.js、Java、PHP、Python 多种技术栈的应用时,内存占用不到 50MB。
要加: 代码语言: javascript 复制 proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection upgrade;proxy_http_version 1.1; 3. 大文件上传 代码语言: javascript 复制 client_max_body_size 100m;proxy_read_timeout 300s; 4. 速率限制 防 DDoS,。
评论列表