Nginx反向代理位置重写

时间:2020-08-29 12:41:16

标签: nginx nginx-reverse-proxy

使用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的标头值来进行管理。

具体地说,我要修改此标头值

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;

}

1 个答案:

答案 0 :(得分:0)

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