Apache 2.4 ReverseProxy на внутренний сервер CentOS 7 GitLab

#apache #gitlab #virtualhost #reverse-proxy #centos7

#apache #gitlab #virtualhost #обратный прокси #centos7

Вопрос:

Я безуспешно пытался настроить Apache как ReverseProxy для внутреннего сервера Gitlab.

Мы используем несколько виртуальных серверов, на каждом сервере есть свое приложение. У нас есть существующий сервер с Apache 2.4, установленный на CentOS 6.6 и работающий, и я совсем недавно установил новый сервер с GitLab 8.12 на CentOS 7. Я внес следующие изменения в /etc/gitlab/gitlab.rb

 external_url 'http://mypublic.domain.com:80'
  

Я добавил следующие правила в iptables

 -A INPUT -p tcp -m state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state NEW -m tcp --dport 80 -j ACCEPT
  

Я убедился, что мы можем использовать ssh при использовании http://mypublic.domain.com:22

Я перепробовал все настройки, которые смог найти в Интернете, чтобы установить VirtualHost в httpd.conf, но ничего не работает правильно. Ниже приведены несколько более свежих, простых примеров, которые я нашел. У кого-нибудь есть какие-либо идеи?

 <VirtualHost 192.168.1.000:80>
   ServerName mypublic.domain.com
   RewriteEngine On
   ProxyPass / http://192.168.1.999/
   ProxyPassReverse / http://192.168.1.999/
</VirtualHost>

####

<VirtualHost 192.168.1.000:80>
    ServerName mypublic.domain.com

    ProxyPreserveHost On
    AllowEncodedSlashes NoDecode

    <Location />
        Require all granted
        ProxyPass http://192.168.1.999:80
        ProxyPassReverse http://192.168.1.999:80
    </Location>
</VirtualHost>

####

Apache Server: 192.168.1.000
GitLab Server: 192.168.1.999
  

Любая помощь будет высоко оценена, спасибо!

Комментарии:

1. Вы уверены, что можете использовать этот ip 192.168.1.000?? Не думайте, что 000 предназначен для использования. Внешняя переменная URL предназначена для прямого использования, я предлагаю вам восстановить ее до оригинала. Gitlab по умолчанию уже использует Nginx для обратного прокси-сервера, возможно, не стоит снова использовать обратный прокси-сервер, попробуйте вместо этого переадресацию портов.

2. Я привел .000 и .999 только в качестве примеров, это не фактические IP-адреса наших серверов. Я понимаю, что это внутренние адреса, но я изменил их по соображениям безопасности. Кроме того, мы используем автономный сервер Apache для всех наших приложений в целях безопасности и обучения. Мы хотели бы соответствовать нашей существующей архитектуре.

3. Попробуйте удалить внешнюю переменную URL. Он предназначен для прямого доступа к gitlab, а не через обратный прокси. Запрос от обратного прокси-сервера будет отправлен как IP-адрес, а не как имя хоста. Если вы используете эту переменную, gitlab настроит собственный виртуальный хост nginx.

4. Я пробовал это безрезультатно, какую конфигурацию виртуального хоста мне следует использовать, или вы могли бы предложить какие-либо изменения?

5. Я не вижу ничего плохого в конфигурации обратного прокси. первое мая проще, начните с этого. Вы также можете проверить создаваемые журналы ошибок. Вы можете добавить приведенную ниже строку для создания журналов ошибок для vhost в отдельном файле и проверить, какова фактическая ошибка сообщения. Журнал ошибок /var/log/apache2/{example.tld}/error.log или журнал ошибок /var/log/apache2/{example.tld}-error.log