2

nginxを使用してJenkinsをプロキシしたいと思います。私はすでにこの構成ファイルを使用してこれの作業バージョンを持っています/etc/sites-available/jenkins

server {
   listen 80;
   listen [::]:80 default ipv6only=on;

   location / {
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_pass http://127.0.0.1:8080;
   }
}

ただし、私がやりたいのは、のような相対URLでJenkinsをホストすることです/jenkins/。ただし、locationディレクティブをを指すように変更すると、/jenkins/すべてが壊れます。どうすればこの(できれば簡単な)変更を行うことができますか?

4

1 に答える 1

8

問題はにあります

proxy_pass http://127.0.0.1:8080;

このproxy_passにURIを設定していません。これは、http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_passによると次のことを意味します。

If proxy_pass is specified without URI, a request URI is passed to the server in
the same form as sent by a client when processing an original request or the full
normalized request URI is passed when processing the changed URI

つまり、/jenkinsをアプリに渡します

proxy_passにスラッシュを追加すると、次のように機能するはずです。

location /jenkins/ {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_pass http://127.0.0.1:8080/;
}

上記のリンクによると、これはURIを使用したリクエストになります。

If proxy_pass is specified with URI, when passing a request to the server, part 
of a normalized request URI matching the location is replaced by a URI specified 
in the directive

スラッシュの追加が機能しない場合は、/ jenkins /のURLを期待するようにjenkinsを構成して、もう一方の端でスラッシュを変更する必要があります。

于 2012-10-25T10:31:22.610 に答える