【问题标题】:Nginx Reverse Proxy Location RewriteNginx 反向代理位置重写
【发布时间】:2020-12-18 04:07:30
【问题描述】:

使用 Nginx 作为反向代理,使用 facebook 的身份验证无法正常工作。

我的 proxy_pass 设置为 origin.example.com,主站点位于 main.example.com。

proxy_pass https://origin.example.com;
proxy_ssl_server_name on;
proxy_set_header Connection "";
proxy_set_header Host origin.example.com;
proxy_http_version 1.1; 
proxy_set_header   Upgrade $http_upgrade; 
proxy_set_header   Connection keep-alive; 
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

使用我要修改的 Location 标头进行 facebook 登录重定向,我发现它可以使用 proxy_redirect 完成。但是,我不知道该怎么做。

我已经在 Facebook 中使用了重定向 URI main.example.com。而且我确实已经请求在源应用程序中进行另一个更改以进行此更改,但是它不在我们的控制范围内,并且必须通过仅从 nginx 修改此标头值来管理它。

具体来说,我想修改这个header值

https://www.facebook.com/v3.1/dialog/oauth?client_id=249911186056401&scope=email&response_type=code&redirect_uri=https%3A%2F%2F**origin.example.com**%2Fsignin-facebook&state=CfDJ8FXKlLU-VLlFryQdHqtwILDwFpBxeh1ZlS5hy7drEOaXtmdjBd8T8m4oyy7LvYttb8Ryyb894ZgCUGPINPQX_jWt-s1J2ZwtJirchyAWfsXXtqC69PYLxJNf84fbK_bXLrpd0eFE7Z0LAwq98gp-54lUwv3rZPNLZ4Jw1q3-3yjjFGTgAvJCDSgiTTxvIpY8E-3WlTlNPMfiFv4USoXHfYeKJaQ52EAAMdhA3dlAoALVsUkOl-0lNUjCP4xa4ZKcRuL1wJI1Gbk7Fg7Nyxzgqu4

https://www.facebook.com/v3.1/dialog/oauth?client_id=249911186056401&scope=email&response_type=code&redirect_uri=https%3A%2F%2F**main.example.com**%2Fsignin-facebook&state=CfDJ8FXKlLU-VLlFryQdHqtwILDwFpBxeh1ZlS5hy7drEOaXtmdjBd8T8m4oyy7LvYttb8Ryyb894ZgCUGPINPQX_jWt-s1J2ZwtJirchyAWfsXXtqC69PYLxJNf84fbK_bXLrpd0eFE7Z0LAwq98gp-54lUwv3rZPNLZ4Jw1q3-3yjjFGTgAvJCDSgiTTxvIpY8E-3WlTlNPMfiFv4USoXHfYeKJaQ52EAAMdhA3dlAoALVsUkOl-0lNUjCP4xa4ZKcRuL1wJI1Gbk7Fg7Nyxzgqu4

我想在 Location 标头中将 origin.example.com 的所有实例替换为 main.example.com。

这是我的服务器块配置

server {
  listen [::]:80;
  listen 80;
  server_name main.example.com;
  return 301 https://www.$host$request_uri;
  
}

server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  server_name main.example.com;
  proxy_set_header Accept-Encoding "";
  sub_filter_types *;
  sub_filter_once off;
  sub_filter "http:" "https:";
  include https.conf;

}

【问题讨论】:

  • 你能添加一个 NGINX 配置的例子,以确定你想要什么吗?如果不是太麻烦,也许是一个小图?
  • @TravisSpencer 谢谢,添加了相同的内容。我希望这有助于理解。

标签: nginx nginx-reverse-proxy


【解决方案1】:

您应该重新配置 Facebook 中的 OAuth 客户端以使用重定向 URI https://main.example.com。在实际应用中,执行OAuth授权请求时不要发送https://origin.example.com,而是使用Facebook重新配置使用的这个。这将确保 Facebook 接受请求,并将有效地隐藏源服务器。登录并授权后,Facebook 会向 NGINX 代理发送回调响应,然后将其传递给隐藏的源站。

【讨论】:

  • 我已经在 Facebook 中使用了重定向 URI main.example.com。而且我确实已经请求在原始应用程序中进行另一次更改以进行此更改,但是它不在我们的控制范围内,并且必须通过仅从 nginx 修改此标头值来管理它。所以我别无选择。感谢您对如何从 nginx 执行此操作的帮助?
  • 您应该在问题中说明该限制。解决这个问题会很棘手。应用程序是通过通过 NGINX 的代码中的一些 JavaScript 点击处理程序启动登录过程,还是执行 NGINX 可以清楚看到的重定向?
  • 登录确实通过重定向 NGINX 来工作,它可以清楚地看到。
  • 您好,有没有办法可以在这里使用某种脚本或编程来修改它?
猜你喜欢
  • 2019-01-20
  • 1970-01-01
  • 2014-02-01
  • 2019-03-14
  • 1970-01-01
  • 2016-12-26
  • 2018-01-31
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多