如何解决Nginx反向代理位置重写
使用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;
}
解决方法
您应该在Facebook中重新配置OAuth客户端以使用https://main.example.com
的重定向URI。在实际的应用中,执行OAuth授权请求时不要发送https://origin.example.com
,而要使用Facebook重新配置为使用的请求。这将确保Facebook接受请求,并有效隐藏原始服务器。登录并获得授权后,Facebook会将回调响应发送到NGINX代理,它可以传递给隐藏的原始服务器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。