You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX反向代理NodeJS版ShareX上传服务返回localhost而非域名问题求助

问题根因

这是NGINX反向代理配置缺失导致的问题,和业务代码无关:

  • 你当前配置中未将客户端请求的原始Host头传递给上游NodeJS服务,NodeJS的req.hostname默认读取的是NGINX发往上游请求的Host值,也就是proxy_pass中填写的localhost:1337,因此会返回localhost作为域名
  • 你已经排除Cloudflare侧问题,只需要修改NGINX配置补全请求头传递即可
修复方案

1. 修改NGINX配置

找到location /块,补充Host、X-Forwarded-*相关请求头配置,修改后的配置如下:

location / {
    proxy_pass http://localhost:1337/;
    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_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;
}

配置修改完成后执行nginx -s reload重载配置即可生效。

2. 可选配置(避免后续协议异常)

如果你的NodeJS服务使用Express框架,可以在服务启动代码中添加如下配置,信任反向代理传递的请求头,即可自动识别HTTPS协议、客户端真实IP等信息:

app.set('trust proxy', 1);

如果是Koa框架,可使用对应代理中间件配置信任代理。

验证方法

重载NGINX后重新发起上传请求,检查req.hostname取值已变为example.com,返回的图片链接域名符合预期即可。

内容的提问来源于stack exchange,提问作者Johnty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 00:24:04