Nginx 作为反向代理部署 JavaScript 应用,可通过配置 proxy_pass 转发请求至后端服务,支持 HTTPS、静态资源托管及 API 代理,解决跨域问题并提升安全性与性能。
一、反向代理的核心作用- 隐藏真实服务器地址:客户端仅能感知代理服务器,无法直接访问后端服务,增强安全性。
- 负载均衡:通过多台后端服务器分配请求,提升系统吞吐量。
- 静态资源缓存:直接响应静态文件(如 CSS、JS),减少后端压力。
- HTTPS 加密:集中处理 SSL/TLS 证书,简化后端配置。
二、Nginx 反向代理 JavaScript 应用的配置步骤1. 基础代理配置假设 JavaScript 应用运行在 localhost:3000(如 Express 或 Vue/React 构建的 SPA),需通过 Nginx 代理至域名 example.com:
- 编辑 Nginx 配置文件(路径通常为 /etc/nginx/sites-available/example.com):server { listen 80; server_name example.com; location / { proxy_pass
http://localhost:3000;
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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; proxy_cache_bypass $http_upgrade; }} - 关键指令说明:
proxy_pass:指定后端服务地址(如 Node.js 应用)。
proxy_set_header:传递客户端真实信息(如 IP、协议)至后端。
Connection 'upgrade':支持 WebSocket 实时通信。
2. 启用 HTTPS(推荐)使用 Let's Encrypt 免费证书增强安全性:
3. 静态资源优化(适用于 React/Vue 构建产物)若前端为打包后的静态文件(如 dist/ 目录),可直接由 Nginx 托管:
location / { root /var/www/myapp/dist; try_files $uri $uri/ /index.html;}- try_files 作用:确保 SPA 路由正常工作,所有路径回退至 index.html。
4. 解决跨域与 API 代理前端部署在 example.com,API 通过 /api 路径代理至后端服务(如 localhost:5000):
location /api/ { proxy_pass http://localhost:5000/;
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;}- 效果:前端通过 /api/users 请求后端,避免跨域问题。
三、配置验证与重启- 测试配置语法:sudo nginx -t
- 重载 Nginx:sudo systemctl reload nginx
四、典型应用场景- Node.js 后端代理:将 Express/Koa 应用隐藏在 Nginx 后,统一处理 HTTPS 和静态资源。
- 前端 SPA 部署:托管 Vue/React 构建产物,利用 try_files 实现路由兼容。
- 微服务架构:通过路径区分不同服务(如 /api/auth、/api/data),简化前端调用。
五、注意事项- 协议一致性:若前端通过 HTTPS 访问,确保 proxy_set_header X-Forwarded-Proto $scheme 正确传递协议,避免后端重定向错误。
- WebSocket 支持:实时应用需配置 Upgrade 和 Connection 头,否则连接会断开。
- 性能调优:高并发场景下可调整 proxy_buffering、proxy_buffers 等参数优化传输效率。
通过上述配置,Nginx 反向代理可显著提升 JavaScript 应用的可靠性、安全性和可维护性,同时简化开发环境与生产环境的差异。