nginx负载均衡器和OAuth

nginx负载均衡器和OAuth,oauth,proxy,nginx,load-balancing,Oauth,Proxy,Nginx,Load Balancing,我正在尝试为两台服务器设置一个nginx负载平衡器/代理,并在这两台服务器上运行经过OAuth验证的应用程序。 当nginx在端口80上运行时,一切都正常运行,但当我将其放在任何其他端口上时,OAuth身份验证失败,并显示“无效签名”错误消息 这是我在nginx.conf中的服务器配置: server { listen 80; server_name localhost; location / { proxy_pass http://webservice;

我正在尝试为两台服务器设置一个nginx负载平衡器/代理,并在这两台服务器上运行经过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,它应该是
http://webservice:81
如果将其移动到端口81。确保您的OAuth代码知道该网站实际上位于端口80而不是81上

要么更新您的客户端,使其显示为端口81,要么告诉服务器它位于端口80


将81替换为您最喜爱的端口

应用程序正在8180个端口上运行,对这些端口的直接OAuth请求将正常通过。我正在尝试在第三台服务器端口8000上创建一个LB。这在ApacheLB上起到了作用,但另一个问题迫使我尝试nginx。问题出在“主机”标题中。为了使OAuth正常工作,它还需要包括端口。这就成功了:代理设置头主机$Host:$server\u端口;还没试过,但这是一个很好的线索:)Thx ddario。