2012-03-14 157 views
2

我正在嘗試爲兩臺服務器設置一個nginx負載平衡器/代理,同時在這兩臺服務器上運行OAuth身份驗證應用。 當端口80上運行nginx時,一切運行良好,但是當我將其放在任何其他端口上時,OAuth身份驗證失敗並顯示「無效簽名」錯誤消息。nginx負載均衡器和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:我注意到端口80從OAuth領域屬性中省略,但其他端口正常添加。

回答

3

這可能與nginx沒有任何關係。 OAuth(1,不是2)需要一個簽名URL,如果您將其移動到端口81,它將爲http://webservice:81.確保您的OAuth代碼知道該網站實際上位於端口80上而不是81.

要麼更新您的客戶端說這是端口81或告訴它在服務器上的80

您最喜愛的端口

+0

應用是在8180個端口上運行,而直接的OAuth請求,這些端口通過精細更換81。我試圖在第三臺服務器端口8000上創建一個LB. 這對Apache LB起作用,但另一個問題迫使我嘗試使用nginx。 – ddario 2012-03-14 20:44:41

+1

問題出在'主機'頭部。爲了使OAuth正常工作,它還需要包含端口。 這個技巧: proxy_set_header Host $ host:$ server_port; – ddario 2012-03-14 21:02:12

+0

還沒有嘗試過,但這是一個goooood領導:) Thx ddario。 – nolazybits 2013-06-07 04:23:39