2016-05-12 68 views
2

作爲一個Nginx的新手,我試圖讓一個反向代理工作到一個外部域。稍後,我將需要移植到內部域。當試圖將代理轉換爲外部域時,我似乎碰壁了,並且404響應無法找到。Nginx反向文件夾位置到外部網站

目標是當我嘗試訪問http://localhost/example反向代理服務www.example.com。

這是我的配置:

server { 
    listen  80; 
    server_name localhost; 

    location/{ 
     root /usr/share/nginx/html; 
     index index.html index.htm; 
    } 

    location /example/ { 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_pass http://www.example.com/; 
    } 

    #error_page 404    /404.html; 

    # redirect server error pages to the static page /50x.html 
    # 
    error_page 500 502 503 504 /50x.html; 
    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 
} 

任何暗示什麼,我做錯了什麼?

回答

1

當談到http時,web服務器通過檢查Host標頭來檢測請求了哪個配置的服務器。在你的情況下,你告訴nginx代理請求到另一臺服務器,但指示它將原始Host標題傳遞到該服務器。顯然,遠程服務器上沒有配置,可以接受該域的請求。所以它回覆你404

要使其正常工作,只需將標題更改爲proxy_set_header Host www.example.com;而不是www.example.com,則應使用與proxy_pass指令中相同的主機。 (或相同的變量)

+0

這是正確的塊嗎? location/example/{ proxy_set_header Host www.example.com; proxy_set_header X-Real-IP $ remote_addr; proxy_pass h * ttp://www.example.com; } 當我嘗試這個我得到確實一個不同的錯誤,但現在 500 - 內部服務器錯誤 Marco

+0

@Marco proxy_pass應該包含與協議和URI的網址。所以在你的第一個例子'proxy_pass http://example.com/;'中沒問題 –