Nginx 无法正确转发 URL

Nginx 无法正确转发 URL

首先这可能不是问题,但即便如此,我也不知道如何给这篇文章命名。

我有一个设置,将每个符合身份验证后格式的 URL 重定向xxxx.ops.internal.com到相应的 URL。

如果我访问该 URL example.ops.internal.com,那么我将被带到,example.ops.internal.com但是如果我访问,foobar.ops.internal.com我还将被带到提供的内容(example.ops.internal.com如果这有意义的话)。

似乎无论我使用什么 URL,example.ops.internal.com都会返回内容。

这是配置:

server {
   listen *:8081;
   server_name example.ops.*;
   location / {
        proxy_pass http://hiddenip;
        proxy_redirect  off;
   }
}

server {
   listen *:8081;
   server_name foobar.ops.*;
   location / {
        proxy_pass http://hiddenip2;
        proxy_redirect  off;
   }
}

看起来总是返回第一个服务器的内容。

身份验证和重定向的发生方式如下:

server {
  listen *:80;
  server_name ~^auth.(?<domain>ops.*)$;
  location = /oauth2/callback {
    proxy_pass http://google-auth;
  }

  location ~/(?<sub>[^/]+)(?<remaining_uri>.*)$ {
    rewrite ^ https://$sub.$domain$remaining_uri;
  }
}

也许某些标题没有被正确传递?

编辑:

这基本上是我的配置Bitly Oauth2 应用程序port :8081它显示了具有上游的身份验证应用程序。

nginx :80 -> oauth app (using Bitly Oauth2 app) -> nginx :8081 -> requested_route

是简化的申请流程。

答案1

Host头未正确转发到 oauth 应用程序,因此永远不会转发到上游。主服务器上需要此配置:80

location  / {
    proxy_pass http://google-auth;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
  }

相关内容