我在 Ubuntu 上使用 ASP.Net Core 3.1,并使用 Nginx 作为反向代理来连接到本地服务器上的应用程序。它的工作原理如下:
location / {
proxy_pass http://localhost:5002;
}
问题始于尝试使用 Google 进行外部登录。我的应用程序在 Windows/IIS 上正常,但当使用 proxy_pass 和 Nginx 时,
请求中的重定向 URI http://localhost:5002/signin-google 与 OAuth 客户端授权的 URI 不匹配
我需要在 NginX 中将传出 URL 从 更改http://localhost:5002/signin-google
为http://example.com/signin-google
答案1
应用程序使用 HTTPHost
标头来确定其所运行的主机名。默认情况下,nginx 不会将Host
标头转发到上游。
您需要添加proxy_set_header Host $host
到您的配置中,这会告诉 nginx 将Host
标头发送到代理服务器。
如果没有Host
标头,应用程序将使用主机名和端口作为值。