nginx负载均衡器和OAuth

提问

我正在尝试为两台服务器设置一个nginx loadbalancer / proxy,并在两台服务器上运行OAuth身份验证的应用程序.
当nginx在端口80上运行时,一切运行正常,但是当我将它放在任何其他端口上时,OAuth身份验证失败并显示“无效签名”错误消息.

这是我在nginx.conf中的服务器配置:

server {
    listen 80;
    server_name localhost;
    location / {
      proxy_pass  http://webservice;

        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Port $server_port;
        proxy_set_header        X-Forwarded-Host $host;
        proxy_set_header        X-FORWARDED-PROTO https;
    }

有没有人遇到过类似的问题?

PS:我注意到OAuth领域属性中省略了端口80,但正常添加了其他端口.

最佳答案

这可能与nginx没有任何关系. OAuth(1,而不是2)需要一个签名URL,如果您将其移动到端口81,则为http:// webservice:81.确保您的OAuth代码知道该网站实际上位于端口80而不是81.

更新您的客户端以说明它的端口81或告诉服务器它是80.

用您喜欢的端口替换81