反向代理用子域名替换文件夹?

反向代理用子域名替换文件夹?

我正在尝试通过 Nginx 反向代理向外部公开 Jenkins 构建状态。我已经创建了一个子域buildstatus.ourcompany.com,但我不希望 URL 如此buildstatus.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

答案1

您的配置将所有请求发送到$scheme://192.168.1.5:8080/buildStatus/URL。

你需要使用

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

将原始 URI 添加到上游请求。

相关内容