使用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的标头值来进行管理。
具体地说,我要修改此标头值
到
我想在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;
}
答案 0 :(得分:0)
您应该在Facebook中重新配置OAuth客户端以使用https://main.example.com
的重定向URI。在实际的应用中,执行OAuth授权请求时不要发送https://origin.example.com
,而要使用Facebook重新配置为使用的请求。这将确保Facebook接受请求,并有效隐藏原始服务器。登录并获得授权后,Facebook会将回调响应发送到NGINX代理,它可以传递给隐藏的原始服务器。