Обратный прокси с использованием Raspbian и Apache - PullRequest
0 голосов
/ 21 сентября 2019

Обратный прокси-сервер с использованием Raspian и Apache

У меня есть несколько машин, на которых работают разные приложения.Недавно я купил Raspberry Pi 4, пытаясь сделать его обратным прокси-сервером для приложений.Допустим, у меня есть три машины A, B и C, где

A: Raspberry Pi 4, на котором работает Raspbian buster lite с установленным Apache2.IP: 192.168.1.2.Я пытаюсь настроить его в обратный прокси-сервер.

B: ВМ под управлением Ubuntu 18.04.IP: 192.168.1.3.Хостинг сервера GitLab.

C: ВМ под управлением Ubuntu 18.04.IP: 192.168.1.4.Хостинг сервера RStudio.

У меня также есть доменное имя с зашифрованным ssl.Допустим, доменное имя example.com.Поскольку есть несколько приложений, которые я хочу маршрутизировать с помощью A, я хочу, чтобы URL example.com/gitlab направлялся на B и example.com/rstudio направлялся на C.

с сохраненным ниже кодомв A:/etc/apache2/sites-available/gitlab.conf я могу направить example.com к B. Но это повлияет на маршрутизацию к C.

# Specify path for Logs
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on

RewriteCond %{HTTP:Upgrade}     !=websocket
RewriteRule            /(.*)     http://192.168.1.3/(.*) [P,L]
ProxyPass              /         http://192.168.1.3/
ProxyPassReverse       /         http://192.168.1.3/
ProxyRequests off

Я также пытался заменить эти / на /gitlab/.Но происходит сбой, так как при вводе example.com/gitlab браузер перенаправляется на example.com/users/sign_in, а не example.com/gitlab/users/sign_in, как и должно быть.Пожалуйста, обратитесь к приведенному ниже сценарию

# Specify path for Logs
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on

# Following lines should open gitlab directly from the url
# Map gitlab to gitlab/
RedirectMatch ^/gitlab$ /gitlab/

RewriteCond %{HTTP:Upgrade}     !=websocket
RewriteRule              /gitlab/(.*)     http://192.168.1.3/(.*) [P,L]
ProxyPass                /gitlab/         http://192.168.1.3/
ProxyPassReverse         /gitlab/         http://192.168.1.3/

ProxyRequests off

Как мне настроить apache, чтобы это работало?Большое спасибо!

1 Ответ

0 голосов
/ 21 сентября 2019

Благодаря DusanBajic я достиг решения.

Конфигурация на сервере GitLab

На сервере GitLab найдите строку

external_url 'http://gitlab.example.com/'

из gitlab.rb в /etc/gitlab/ и измените строку в

external_url 'http://gitlab.example.com/gitlab/'

Затем запустите следующие сценарии

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo reboot

Затем вы можете получить доступ к GitLab через

http://localhost/gitlab/

, но вы можете обнаружить, что он отвечает на ошибку 502. Просто подождите несколько минути попробуй еще раз.

Конфигурация на прокси-сервере

На прокси-сервере создайте файл gitlab.conf в каталоге /etc/apache2/sites-available/ со следующими строками

# Specify path for Logs
ErrorLog                ${APACHE_LOG_DIR}/error.log
CustomLog               ${APACHE_LOG_DIR}/access.log    combined
RewriteEngine           on

# Following lines should open gitlab directly from the url
# Map gitlab to gitlab/
RedirectMatch           ^/gitlab$              /gitlab/

RewriteCond             %{HTTP:Upgrade}         !=websocket
RewriteRule             /gitlab/(.*)           http://192.168.1.3/gitlab/(.*) [P,L]
ProxyPass               /gitlab/               http://192.168.1.3/gitlab/
ProxyPassReverse        /gitlab/               http://192.168.1.3/gitlab/
ProxyRequests           off

Затем выполните следующую командускрипты

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_html
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite

и

sudo systemctl a2ensite gitlab.conf
sudo systemctl reload apache2
sudo service apache2 restart
...