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

用域名配置Nginx代理遇阻:CORS及HTTPS场景下的配置问题排查

解决Nginx反向代理CORS Anywhere出现"invalid host"错误的方案

问题根源分析

  • Node.js的CORS代理绑定了domain.com,导致服务仅接受目标主机为domain.com的请求,而Nginx转发的请求来自本地localhost,被Node服务拒绝。
  • Nginx的proxy_pass配置未添加尾部斜杠,导致请求路径被错误转发(/proxy/target被原封不动转发给Node服务,而非预期的/target),不符合CORS Anywhere的路径规则。

具体修复步骤

1. 修改Node.js代理的监听地址

将Node代码中的host设置改为0.0.0.0,让服务接受来自所有网络接口的请求:

require('dotenv').config();
// 改为绑定0.0.0.0,接受所有接口的请求
var host = process.env.HOST || '0.0.0.0'; 
var port = process.env.PORT || 8080;

var cors_proxy = require('cors-anywhere');
cors_proxy.createServer({
    originWhitelist: [], // 允许所有来源
    requireHeader: ['origin', 'x-requested-with'],
    removeHeaders: ['cookie', 'cookie2']
}).listen(port, host, function() {
    console.log('Running CORS Anywhere on ' + host + ':' + port);
});

2. 修正Nginx的反向代理配置

在/proxy的proxy_pass末尾添加斜杠/,确保路径正确转发;同时移除不必要的WebSocket相关配置(CORS Anywhere无需升级连接):

server {
  server_name domain.com www.domain.com;
  root /var/www/docs;

  location / {
        try_files $uri $uri/ /index.html =404;
  }
  location /api {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
  }
  location /proxy {
        # 末尾添加斜杠,让Nginx自动重写路径
        proxy_pass http://localhost:8080/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
  }
  # ... SSL 配置
}

3. 重启服务生效

  • 重启Node.js代理服务,应用新的监听地址配置。
  • 重启Nginx加载新配置:
sudo nginx -s reload

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:26