试图在 SSL 反向代理后面运行 Jenkins - 404 http://localhost/jenkins/manage vs. https:

rab*_*ens 3 ssl nginx reverse-proxy jenkins

我正在尝试在 nginx 后面运行 Jenkins。Jenkins 在 Docker 容器中运行,从目录 /jenkins 侦听端口 8080。我的 nginx 容器将此 Jenkins 容器链接为主机名“jenkins”,因此在其上下文中,可以通过http://jenkins:8080/jenkins访问 Jenkins 。

我按照从使用 TLS 加密的文件夹运行 Jenkins 中的步骤进行操作,因此我site-config包含以下内容:

location ^~ /jenkins/ {
    sendfile off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_pass http://jenkins:8080/jenkins/;
    proxy_redirect http:// https://;
    proxy_max_temp_file_size 0;
    client_max_body_size       64m;
    client_body_buffer_size    128k;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
  }
Run Code Online (Sandbox Code Playgroud)

我现在试图从本地主机访问 nginx,并调用https://localhost/jenkins向我展示 Jenkins。但是,当我转到“管理 Jenkins”时,收到消息说我的反向代理设置不正确。我试过

curl -k -iL -e https://localhost/jenkins/manage \
   https://localhost/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
Run Code Online (Sandbox Code Playgroud)

这给了我一个带有http://localhost/jenkins/manage vs. https:.

当我添加

    proxy_set_header   X-Forwarded-Proto  https;
    proxy_set_header   X-Forwarded-Port 443;
    proxy_set_header   X-Forwarded-Ssl on;
Run Code Online (Sandbox Code Playgroud)

消息更改为 https://localhost/jenkins/manage vs. https:

我错过了什么?

pee*_*dee 6

我刚才遇到了这样的问题,/sf/answers/1436024271/中描述了为我解决的问题

我的不工作配置使用了这一行:

proxy_pass http://127.0.0.1:8015/jenkins/;
Run Code Online (Sandbox Code Playgroud)

但我的工作配置现在看起来像这样:

location /jenkins/
{
  proxy_pass http://127.0.0.1:8015$request_uri;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-for $remote_addr;
  port_in_redirect off;
  proxy_redirect http://my.host/jenkins /jenkins;
  proxy_connect_timeout 300;
}
Run Code Online (Sandbox Code Playgroud)