设置 nginx 以正确转发链接(和图像)

设置 nginx 以正确转发链接(和图像)

首先,我要指出的是,我以前在这里见过这个问题,但从来没有给出真正有效的答案。

问题如下:我有一个在 8080 上运行的 Jenkins 服务器(Ubuntu 14.04)。我试图将其移植到 [domain]/ci/。虽然这很简单,而且确实有效,但大多数链接仍然指向根目录,即 [domain],因此无法从该地址访问服务器。我尝试了各种选项

proxy_redirect http://$host/ http://$host/ci/;

带端口或不带端口、完整主机名、本地主机……随便你怎么说。什么都没有。链接仍然指向服务器的根目录,因此许多链接、所有图像和脚本都不可用。

这是配置文件中的 ci 部分。很想得到一些关于这方面的输入,但它就是不起作用。

 location /ci/ {
            proxy_pass http://localhost:8080/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect http://$host/ http://$host/ci/;
    }

跑步

curl -I [domain]/ci

返回

Location: http://[domain]/ci/

但它不起作用。这很可能是 Jenkins 的错误,因为链接都是按照 root (例如<link rel="stylesheet" type="text/css" href="/static/15751a6d/css/style.css" />) 进行的,但我仍然认为我遗漏了一些东西。

答案1

您的设置存在问题,Jenkins 不知道您移动了其根 URL。
正如 Jenkins wiki 所述,您应该使用以下参数才能正确运行它:

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/ci"

推荐阅读:Jenkins 维基

相关内容