Запуск двух веб-приложений на Apache 2.4

Запуск двух веб-приложений на Apache 2.4

Я пытаюсь запустить два приложения на моем сервере Linux Apache:

  • OpenProject
  • pgAdmin (приложение WSGI)

И для того, чтобы подключить их с удаленного компьютера, я использую эти httpdфайлы конфигурации:

Для OpenProject:

Include /etc/openproject/addons/apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName 198.162.12.13
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/apache2/includes/vhost/*.conf

  # Can't use Location block since it would overshadow all the other proxypass directives on CentOS
  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>

Для pgAdmin:

<VirtualHost *:80>

    ServerName 198.162.214.23
    WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
    WSGIDaemonProcess pgadmin processes=1 threads=25

    <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

</VirtualHost>

И вот тут начинается магия (для меня), и вот в чем мой вопрос:

взгляните на имена серверов в обоих файлах: pgAdmin содержит мой реальный IP-адрес, а OpenProject — какой-то случайный IP-адрес.

При такой настройке pgAdmin работает, а OpenProject — нет.

Как правило, без настройки pgAdmin OpenProject работает с любым IP-адресом, что для меня странно, поэтому мой первый вопрос: почему???

Итак, подведем итог:

Если я укажу в обоих файлах свой реальный IP-адрес, то OpenProject будет работать, а pgAdmin — нет.

Если я настрою в обоих файлах какой-нибудь случайный IP-адрес, то OpenProject будет работать, а pgAdmin — нет.

Если я настраиваю реальный IP для OpenProject, случайный для pgAdmin, то OpenProject работает, а pgAdmin — нет.

Если я настраиваю случайный IP для OpenProject, а фактический IP для pgAdmin, то OpenProject не работает, а pgAdmin работает.

Почему все так запутано? Как настроить эти файлы, чтобы оба приложения работали как надо?

решение1

Используйте DNS для создания двух имен (например, openproject.exampleи pgadmin.example), указывающих на фактический адрес (очевидно, 198.162.12.13) вашего сервера. Настройте эти имена в соответствующих ServerNameнастройках и используйтеhttp://openproject.exampleиhttp://pgadmin.exampleдля доступа к ним.

решение2

Для запуска нескольких отдельных веб-сайтов/приложений на одном IP-адресе у вас есть примерно три варианта:

  • Каждое приложение устанавливается по разным URL-путям, например, $(hostname)/app1и /app2.

Если оба приложения необходимо установить в корневом каталоге, то /у вас есть следующие варианты:

  • запустить несколько виртуальных веб-серверов на разных номерах портов и http://$(hostname):81/отобразить одно приложение, а http://$(hostname):82/может и другое

  • запустить несколько виртуальных веб-серверов под разными именами хостов и сделатьвиртуальный хостинг на основе имени. Тогда http://app1.example.com/может показать одно приложение и http://app2.example.com/покажет другое

Ваша конфигурация, похоже, пытается использовать последний вариант, но поскольку оба определения VirtualHost настроены с одним и тем же ServerNameApache не может их различить.

Связанный контент