web-dev-qa-db-ja.com

サブディレクトリのnginxリバースプロキシの背後にあるJenkins

Nginxの背後にあるサブディレクトリにJenkinsを設定するのに苦労しています。 localhostで実行されている2つのアプリがあります。それらの1つはジェンキンであり、foo.com/jenkinsにアクセスすることでアクセスできるはずです。他のアプリはfoo.com/にあります。

ジェンキンスへのリクエストには、/jenkins/プレフィックス、つまり、私はそれを書き換え(削除)します。しかし、jenkinsの最初のページは読み込まれますが、すべてのリソース(js、cssなど)が見つからず、Webサイトは見苦しく見えます。理由は、リクエストにjenkinsプレフィックスがなく、他のアプリにリダイレクトされることです(スクリーンショットのリンクを参照)。

Jenkinsページから正しいハンドラーにリクエストをルーティングするにはどうすればよいですか?

server {
    listen 80;
    server_name foo.com;  

    # jenkins server in subdir:      
    location ^~ /jenkins/ {
       rewrite ^/jenkins(.*) /$1 break;
       proxy_pass http://127.0.0.1:9500/;
    }
    # main app:
    location / {
        proxy_pass http://127.0.0.1:8081;
    }
}

enter image description here

1
user2366975

ドキュメントからコピー&ペースト:

さらに、Jenkinsが/ jenkins /フォルダーへのリクエストをリッスンするように構成されていることを確認する必要があります(例 http://10.0.0.100:8080/jenkins/ ではなく http://10.0.0.100:8080/ )。これを行うには、パラメーター-prefix =/jenkinsをJenkinsのデフォルトの起動構成ファイルに追加します。私のシステム(Ubuntu 12.04 LTS)では、構成ファイルは/ etc/default/jenkinsです。たとえば、ここにJENKINS_ARGパラメータリスト全体があります(私が追加した部分は-prefix =/jenkinsでした):

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

設定したら、Jenkins> Jenkinsの管理> Jenkinsの場所> Jenkins URLでJenkins UIによって使用されるURLを次のように設定する必要があります: " https://domain.tld/jenkins/

3