У меня есть несколько инструментов, работающих на разных портах на одной машине. Jenkins, gitea и т. Д. У меня есть настройка CNAME для каждого. jenkins.foo.bar, gitea.foo.bar и т. д. Я пытаюсь настроить его так, чтобы, когда я перехожу на jenkins.foo.bar, он фактически загружает foo.bar:8080, а gitea.foo.bar загружает foo.bar : 3000. До сих пор я пытался настроить проход прокси и обратный проход прокси с httpd 2.4.6.
<VirtualHost gitea.foo.bar:80>
ServerName gitea.foo.bar
ServerAlias gitea.foo.bar gitea.foo
ProxyPreserveHost On
ProxyPass / foo.bar:3000/
ReverseProxyPass / foo.bar:3000/
</VirtualHost>
РЕДАКТИРОВАТЬ: Фактический вопрос ... Первоначально я получал ошибку 403 недоступен. Теперь, когда я захожу на gitea.foo, он правильно перенаправляется на foo.bar:3000. gitea.foo.bar загружает индекс foo.bar и не перехватывается прокси.
Часть 2: Можно ли сохранить gitea.foo в адресной строке и не отображать перенаправленный адрес?
=========================
РЕДАКТИРОВАТЬ (Решение): Большое спасибо @GeraldSchneider
SeLinux блокировал проход прокси. Обратите внимание, это заняло 20 минут
setsebool -P httpd_can_network_connect 1
Переместите ssl.conf в сторону, так как он прослушивал 443.
mv /etc/httpd/conf.d/ssl.conf /etc/hhtpd/conf.d/ssl.conf.bak
Добавьте следующее в /etc/httpd/conf/httpd.conf
Listen 443 https
<VirtualHost *:80>
ServerName gitea.foo.bar
Redirect / httpd://gitea.foo.bar:3000
</VirtualHost>
<VirtualHost _default_:443>
ServerName gitea.foo.bar
SSLEngine On
SSlProxyEngine On
SSLCertificateFile /etc/PATH/TO/gitea.foo.bar.pem
SSLCertificateKeyFIle /etc/PATH/TO/gitea.foo.bar.key
ProxyPass / https://gitea.foo.bar:3000/
ProxyPassReverse / https://gitea.foo.bar:3000/
</VirtualHost>
Отредактируйте конфигурацию gitea /etc/gitea/app.ini
[server]
PROTOCOL = https
ROOT_URL = https://gitea.foo.bar
CERT_FILE = /etc/PATH/TO/gitea.foo.bar.pem
KEY_FILE = /etc/PATH/TO/gitea.foo.bar.key
Ваша конфигурация Apache в порядке, проблема в вашем сервере.
Ваш бэкэнд настроен для URL foo.bar:3000
, поэтому он перенаправляется туда, когда НЕ достигается через этот URL.
Вам необходимо настроить внутренние серверы для нового URL-адреса. Как это сделать на каждом сервере приложений по-разному, общее название такой настройки - base url
или что-то вроде этого. Прочтите документацию к своим внутренним серверам (jenkins, gitea и т. Д.) О том, как это сделать.
Примеры:
Дженкинс: https://stackoverflow.com/questions/11221238/what-does-jenkins-url-means-in-configuration-settings
Гитеа:
устанавливать
[server] ROOT_URL = http://git.example.com/git/
в вашей конфигурации.