首先这可能不是问题,但即便如此,我也不知道如何给这篇文章命名。
我有一个设置,将每个符合身份验证后格式的 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;
}