2015-11-24 50 views
0

我可以通過Forefront TMG2010對多個內部Web服務器進行反向代理。由於TMG非常簡單,我已經完成了大量的主機和虛擬目錄映射/重寫。NGINX反向代理與重寫替換TMG2010

現在我想在NGINX中獲得同樣的效果。

例如,

apphost.domain.com/需要內部映射到server1/APPPATH/

apphost.domain.com/test/需要內部映射到server2/APPPATH/

apphost.domain.com/dev/需要內部映射到server3/apppath/

在每種情況下,內部/ apppath /都需要對客戶端不可見。這是爲了實現與TMG中的內部路徑映射的外部相同。

我到目前爲止所做的是:

server { 

    listen 80; 

    server_name host.server.com; 

    location /test/ { 
    proxy_set_header Host $host; 
    rewrite ^(.*)$ /app/$1 break; 
     proxy_pass http://10.0.0.2; 
    } 

    location/{ 
    proxy_set_header Host $host; 
    rewrite ^(.*)$ /app/$1 break; 
    proxy_pass http://10.0.0.1; 
     } 

但只有/似乎工作,/測試/ doesnt。

幫助!

+0

你想把'/ test /'映射到'http:// 10.0.0.2/app // test /'嗎?你也有一個額外的'/'在那裏。您也可以將URI附加到'proxy_pass'而不是使用'rewrite ... break'。請參閱:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass –

+0

不,我想在內部放棄/ test。 –

+0

不,我想在內部放棄/測試,但它需要保持顯示在外部。 –

回答

0

所以你想映射/test/foohttp://10.0.0.2/app/foo。最簡單的解決辦法是:

location /test/ { 
    proxy_set_header Host $host; 
    proxy_pass http://10.0.0.2/app/; 
} 

根據the documentation所述/test/元件將由/app/當它通過上游被替換。