2016-10-06 88 views
0

我在通過nginx代理運行的頁面時遇到了一些問題。 這個頁面調用其他內部服務器,我想用nginx重寫這些URL。nginx重寫代理頁面中的url

我已經有一個代理通過運行以下:

foo.site.internal - > foo.site.nl(公共) 該網站內部,呼籲像其他一些服務: foo2的。 site.internal:1400/json/api/call/bla

當前foo.site.nl試圖通過一些javescript用法接收這些調用。但這是不可能的,因爲最終用戶無法連接到foo2.site.internal

所以我創建了一個反向代理: foo2.site.internal:1400運行在:foo.site.nl :1400,所以我想在不改變後端站點配置的情況下完成以下任務:

將頁面中的foo2.site.internal:1400/json/api/call/bla重寫爲foo.site.nl: 1400/json/api/call/bla

nginx能做這樣的事嗎?

我目前的配置:

server { 
    listen 443 ssl; 
    ssl_certificate /etc/nginx/ssl/site.nl.cert; 
    ssl_certificate_key /etc/nginx/ssl/site.nl.key; 

    server_name foo.site.nl; 

    location/{ 
    proxy_intercept_errors on; 
    proxy_set_header X-Forwarded-Host $host; 
    proxy_set_header X-Forwarded-Server $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://foo.site.internal/; 
    } 
} 

server { 
    listen  14000 default_server; 
    server_name foo.site.nl; 
    location/{ 
    proxy_pass  http://foo2.site.internal:14000; 
    proxy_set_header Host foo2.site.internal:14000; 
    } 
} 

回答

0

您可以使用此配置:

server { 
    listen 443 ssl; 
    ssl_certificate /etc/nginx/ssl/site.nl.cert; 
    ssl_certificate_key /etc/nginx/ssl/site.nl.key; 

    server_name foo.site.nl; 

    location/{ 
    proxy_intercept_errors on; 
    proxy_set_header X-Forwarded-Host $host; 
    proxy_set_header X-Forwarded-Server $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://foo.site.internal/; 
    } 
} 

server { 
    listen  14000 default_server; 
    server_name foo.site.nl; 
    location/{ 
    try_files $uri $uri/ /index.php?$args; 
    proxy_pass  http://foo2.site.internal:14000; 
    proxy_set_header Host foo2.site.internal:14000; 
    } 
} 
+0

這似乎並沒有工作:https://s21.postimg.org/hr9v8m5fb/imagekopie.png 我想重寫de網頁內容中的網址。 當頁面的url被重寫到intra-intern.domain.nl(公共頁面)時,https錯誤將被解決。 – Mitchel