我正在尝试通过 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 添加到上游请求。