Jenkins-CIを実行しているTomcatへのリバースプロキシとして機能するようにApacheを設定しました。 jenkinsにログインすると、lan-hostnameにリダイレクトされ、もちろんネットワークの外部で失敗することを除いて、外部からサイトにアクセスできます。その後、ブラウザに元のアドレスを手動で入力できます。再度ログインするまでは正常に機能します。
これがjenkinsの問題なのか、それともApache/Tomcatプロキシの設定の問題なのか疑問に思います。
Jenkinsはまた、管理ページで私のプロキシ設定が正しくないことを報告していますが、それ以上は教えてくれません。
Apache VirtualHostの構成:
<VirtualHost *:80>
ServerName jenkins.outsideaddress
ServerAlias ci.outsideaddress jenkins.insideaddress ci.insideaddress
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
また、プロキシおよびproxy_httpモジュールがロードされます(apachectl -M
による)
私はついに問題を解決することができました(少なくとも私はそう思います)!
同様のApachehttpdプロキシ構成で正常に機能するようにnexusmavenリポジトリーを構成しようとしたときに、同様の問題が発生しました。それから私はたまたま彼らの課題追跡システムに提出された課題に遭遇しました、そこでそれはいくつかのURLを間違って構築しました。
コメントで提案された修正は追加することでした
ProxyPreserveHost On
他のプロキシ設定ディレクティブがあるhttpdのconf内の仮想ホストに。問題はもうわかりません。
ProxyPassReverseの後にこれを追加してみてください。 outsideaddressは外部FQDNです。
RewriteEngine on
RedirectMatch ^/(.*)$ http://outsideaddress/$1
Jenkinsで、[Manage Jenkins]を確認し、[JenkinsURL]フィールドまで下にスクロールします。これをjenkins.outsideaddressに変更します。
内部アクセスの場合は、名前の変更またはCNAMEを介して、jenkins.outsideaddressをjenkins.insideaddressに解決するようにLANDNSを設定します。 jenkins.outsideaddressにリダイレクトする内部アドレスにキャッチオールを設定することもできます。