如何在Nginx中使用代理将路径转发至同网段的虚拟机
解决方案:将www.example.com/dev完整转发至开发VM
原配置中location /dev指向本地目录,要实现完整转发到同网段的开发VM,需将该块替换为反向代理配置,具体操作如下:
确认开发VM的内网IP
获取开发VM的10.10.38.X段真实IP,下文假设为10.10.38.100,实际使用时替换为真实值。修改生产服务器Nginx配置
替换原location /dev块为以下反向代理配置:
location /dev/ { # 转发到开发VM的Web服务(默认80端口,若开发VM用其他端口需修改) proxy_pass http://10.10.38.100/; # 支持HTTP/1.1及WebSocket等升级请求 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; # 传递必要请求头,确保开发VM服务正常识别请求 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_no_cache 1; }
关键配置说明:
location /dev/和proxy_pass末尾的斜杠配合,会自动将/dev/xxx格式的请求转发为开发VM的/xxx,适配开发环境的应用路径结构。- 若开发VM的Web服务监听非80端口,需在
proxy_pass中补充端口,例如http://10.10.38.100:8080/。
- 验证配置并重启服务
- 执行配置语法检查:
nginx -t - 重启Nginx使配置生效:
systemctl restart nginx(根据系统环境调整命令)
注意事项:
- 确保开发VM的防火墙允许生产VM的IP访问其Web服务端口(80或自定义端口)。
- 开发VM的Nginx需配置为默认服务器(
server_name _;)或匹配www.example.com,避免返回404错误。 - 开发环境的API接口无需单独配置,反向代理会自动转发所有
/dev/api请求到开发VM的/api路径。
内容的提问来源于stack exchange,提问作者user14028806
相关产品推荐
相关产品推荐

