2017-01-20 25 views
1

刪除不需要的斜線我有以下配置(服務器標籤內)對我的nginx服務器:/從nginx的

location/{ 

    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-Proto $scheme; 

    # Fix the 「It appears that your reverse proxy set up is broken" error. 
    proxy_pass   http://localhost:5000; 
    proxy_read_timeout 90; 


} 
location /api { 
    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-Proto $scheme; 

    # Fix the 「It appears that your reverse proxy set up is broken" error. 
    proxy_pass   http://localhost:2233/; 
    proxy_read_timeout 90; 
    proxy_redirect default; 
} 

我現在試圖訪問/ API /認證/註冊通過網頁瀏覽器我。在2233端口,我有一個運行Flask的python服務器。現在,在Python控制檯我得到:

"GET //auth/login/ HTTP/1.0" 404 - 

在我oppinion此路徑凌亂,也沒有在燒瓶配置,這就是爲什麼有一個404響應(用於/認證/登錄我有一個路徑)。

如何擺脫nginx產生的前導斜槓?

回答

1

您正在使用proxy_pass指令來別名/api/foo/foo。如果源URI和目標URI均以/結尾或者既不以/結尾,那麼別名的效果最好。

所以:

location /api/ { 
    proxy_pass http://localhost:2233/; 
    ... 
} 

將正確映射到/api/foo沒有/foo在開始加入雙/。詳情請參閱this document

這也可能意味着裸露的URI /api現在可能無法正常工作。

或者,使用rewrite ... break;代替proxy_pass執行別名:

location /api { 
    rewrite ^/api(?:/(.*))?$ /$1 break; 
    proxy_pass http://localhost:2233; 
    ... 
} 

詳見this document

+0

感謝您的重寫代碼 - 工作 – pytomaniaq