Estou tentando executar dois aplicativos em meu servidor Linux Apache:
- Projeto aberto
- pgAdmin (que é o aplicativo WSGI)
E, para conectá-los de um computador remoto, eu uso esses httpd
arquivos de configuração:
Para 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>
Para 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>
E agora começa a magia (para mim) e onde está a minha pergunta:
dê uma olhada nos nomes dos servidores em ambos os arquivos, o pgAdmin contém meu endereço IP real, enquanto o OpenProject possui algum endereço IP aleatório.
Com essa configuração, o pgAdmin funciona, mas o OpenProject não.
Geralmente, sem configuração para o pgAdmin, o OpenProject funciona com qualquer endereço IP, o que para mim é estranho, então minha primeira pergunta é: por quê???
Entao, para resumir:
Se eu configurar em ambos os arquivos meu endereço IP real, o OpenProject funcionará, o pgAdmin não.
Se eu configurar em ambos os arquivos algum endereço IP aleatório, o OpenProject funcionará, o pgAdmin não.
Se eu configurar o IP real para o OpenProject, aleatório para o pgAdmin, então o OpenProject funciona, o pgAdmin não.
Se eu configurar um IP aleatório para OpenProject, IP real para pgAdmin, então o OpenProject não funciona, mas o pgAdmin funciona.
Por que está tão confuso? Como configurar esses arquivos para que ambos os aplicativos funcionem conforme o esperado?
Responder1
Use DNS para criar dois nomes (por exemplo, openproject.example
e pgadmin.example
) apontando para o endereço real (aparentemente 198.162.12.13) do seu servidor. Configure esses nomes nas respectivas ServerName
configurações e usehttp://openproject.exampleehttp://pgadmin.examplepara acessá-los.
Responder2
Para executar vários sites/aplicativos separados em um único endereço IP, você tem aproximadamente três opções:
- Você instala cada aplicativo em caminhos de URL diferentes, ou seja,
$(hostname)/app1
e/app2
.
Se ambos os aplicativos precisarem ser instalados na raiz, /
suas opções serão
executa vários servidores web virtuais em diferentes números de porta e
http://$(hostname):81/
mostrará um aplicativo ehttp://$(hostname):82/
poderá mostrar outro diferenteexecute vários servidores web virtuais sob diferentes nomes de host e façaalojamento virtual baseado em nome. Então
http://app1.example.com/
pode mostrar um aplicativo ehttp://app2.example.com/
mostrará outro
Sua configuração parece uma tentativa de usar essa última opção, mas como ambas as definições do VirtualHost são configuradas com o mesmo ServerName
Apache, não é possível distingui-las.