Мне нужно настроить Apache 2.4 в качестве обратного прокси-сервера для внутреннего сервера Jetty 9, чтобы у меня был общедоступный сайт: https://jenkins.mysite.com, и он будет перенаправлен на внутренний http://localhost:8080/jenkins
Я пробовал разные настройки, а также:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName jenkins.mysite.com
DocumentRoot /home/jenkins/web
Alias / /home/jenkins/web/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
SSLEngine on
SSLProxyEngine On
BrowserMatch "MSIE [2-6]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
<Directory "/home/jenkins/web/WEB-INF/">
AllowOverride None
Require all denied
</Directory>
ProxyRequests Off
ProxyVia Off
#Tried On and Off. With ProxyPassReverse and without
ProxyPreserveHost Off
#Tried all below settings with no luck
#AllowEncodedSlashes NoDecode
#RequestHeader set X-Forwarded-Proto "https" env=HTTPS
#RequestHeader set X-Forwarded-Port 443
<Proxy *>
AddDefaultCharset off
AllowOverride None
Require all granted
</Proxy>
#Tried below instead of nocanon in ProxyPass
#RewriteEngine on
#RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
#RewriteRule .* http://127.0.0.1:8080/jenkins/%{REQUEST_URI} [NE,P,QSA]
ProxyPass / http://localhost:8080/jenkins nocanon
ProxyPassReverse / http://localhost:8080/jenkins
#That was useful to remove contextPath from Cookie path
#ProxyPassReverseCookiePath "/jenkins" "/"
<Location />
Options FollowSymLinks
AddDefaultCharset off
AllowOverride None
Require all granted
</Location>
SSLCertificateFile /etc/letsencrypt/live/jenkins.mysite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/jenkins.mysite.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
Для Jetty я пытался использовать http-forwarded модуль. Не помогло ни с этим, ни без него.
Лучшее, что я мог добиться, чтобы прямые ссылки работали. Но все URL-адреса и перенаправления, на которые есть ссылка (например, имя входа), имели дополнительный внутренний contextPath: / jenkins / *
Есть ли способ настроить его так, как я хочу? В частности, чтобы избежать жалоб со стороны Jenkins на то, что обратный прокси-сервер нарушен?
Я могу заставить его работать, если я использую виртуальный хост для пристального контекста с contextPath = /. Но это требует изменения / etc / hosts, которого я пытаюсь избежать.
Конечно, mysite.com - это гипотетическое имя. Я использовал реальное доменное имя. Спасибо.