【问题标题】:NGINX Reverse Proxy redirecting instead of proxyingNGINX 反向代理重定向而不是代理
【发布时间】:2019-05-23 19:13:07
【问题描述】:

我有一个 NGINX 服务器作为反向代理运行。代理适用于 Windows 主机,但是我有一个自己的云服务器,代理会将 url 改写为内部主机名或 IP 地址。 ex(我输入 cloud.example.com,我的 url 栏将更改为 10.1.1.19,这在 wan 上无法解析

我检查了 DNS 记录并确保 NGINX 可以解析主机名。还尝试将 http 流量转发到云服务器,以确保使用域名不是问题。

server {
  listen 80;
  listen [::]:80;

  server_name example.com;

  location / {
      proxy_pass http://10.1.1.16:80/;
  }
}

server {
  listen 80;
  listen [::]:80;

  server_name cloud.example.com;

  location / {
      proxy_pass http://10.1.1.19:80/;
  }
}

server {
  listen 80;
  listen [::]:80;

  server_name remote.example.com;

  location / {
      proxy_pass http://10.1.1.17:80/;
  }
}

我只需要 NGINX 作为“cloud.example.com”的代理运行,而不是重写 URL

【问题讨论】:

  • 您可以尝试从 proxy_pass 中的 URL 末尾删除 /
  • 没有用。它仍在重定向到 server { listen 80; 下面的新代码的内部地址听 [::]:80; server_name cloud.example.com;位置 / { proxy_pass 10.1.1.19:80; } }
  • 尝试为每个 URL 创建不同的文件并将它们放在启用站点的文件夹中,然后运行 ​​nginx -t reload 。移除 IPV6 监听 [::]:80;来自conf。让我知道结果,然后我将与您分享一些工作 conf 文件
  • 所以这实际上破坏了更多的网站。然而,在把所有东西放回去时,我确实看到它只是重定向而不是代理的 Linux 主机,我添加了 cockpit 只是为了测试它,它做同样的事情,但是我抛出 Windows IIS 页面给它一​​个随机端口,它工作正常。我忽略了 linux 是否存在配置问题?
  • 我是一个 linux 菜鸟,所以我建立了一个“桌面”版本,所以我有一个 UI 可以完全按照你说的那样工作。这次它没有破坏 windows 主机,但任何 linux 主机都将 url 改写为服务器的内部 IP。

标签: nginx-reverse-proxy


【解决方案1】:

我找到了部分答案——Why is my Nginx reverse proxy doing a 301 redirect instead of proxying?

对我来说,它阻止了 nginx 更改主机名(即从 good-domain.com 到 10.1.5.5:8080),但似乎没有办法阻止 nginx 将端口附加到客户端的请求网址。

因此,在使用上面引用的答案时,我能够从 http://10.1.5.5:8080 转到 http://good-domain:8080。它仍然不是我想去的地方,但它肯定会让我更接近。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 2020-05-31
    • 2020-01-05
    • 2014-08-22
    • 1970-01-01
    相关资源
    最近更新 更多