Nginx

反向代理用子域替換文件夾?

  • July 28, 2022

我正在嘗試通過 Nginx 反向代理在外部公開 Jenkins 建構狀態。我已經創建了一個 subdomain buildstatus.ourcompany.com,但我不希望 urlbuildstatus.ourcompany.com/buildstatus/icon?...如此我正在嘗試以下,沒有運氣:

server {
   listen              80;
   server_name         buildstatus.company.com;
   location / {
       proxy_pass      $scheme://192.168.1.5:8080/buildStatus/;
   }
}   

當我訪問時,這會導致以下錯誤buildstatus.companyname.com/icon?job=projectname

HTTP ERROR 404 Not Found
URI:  /buildStatus/
STATUS:   404
MESSAGE:  Not Found
SERVLET:  Stapler

我已確認訪問192.168.1.5/buildStatus/icon?job=projectname按預期進行。

我嘗試了其他幾件事,包括一個使用url_rewrite的,但只是得到了其他錯誤。

我怎樣才能buildstatus.companyname.com/icon?job=projectname產生與 相同的結果192.168.1.5/buildStatus/icon?job=projectname

您的配置將所有請求發送到$scheme://192.168.1.5:8080/buildStatus/URL。

你需要使用

proxy_pass $scheme://192.168.1.5:8080/buildStatus$request_uri;

將原始 URI 添加到上游請求。

引用自:https://serverfault.com/questions/1106869