Configuração do Apache com proxy e localização

2

Eu quero mapear esses domínios para essas portas. Como posso fazer isso?

http://test1.example.com/phpmyadmin/    example.com:80/phpmyadmin/
http://test1.example.com/app1/          example.com:8080/app1/
http://test1.example.com/app2/          example.com:8090/app2/

http://webmin.example.com/              example.com:10000/

Isso é o que eu fiz. O problema é que phpmyadmin não está funcionando. É encaminhado para glassfish .

webmin está funcionando porque é um domínio separado.

Como posso mapear phpmyadmin para o mesmo domínio? link

<VirtualHost *:80>
    ServerName              test1.example.com
    ProxyRequests           Off
    ProxyPreserveHost       On

    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass           /           http://localhost:8080/
    ProxyPassReverse    /           http://localhost:8080/

    ProxyPass           /admin/     https://localhost:4848/
    ProxyPassReverse    /admin/     https://localhost:4848/
</VirtualHost>

<VirtualHost *:80>
    ServerName      test1.example.com/phpmyadmin/
    DocumentRoot    /usr/share/phpmyadmin

    Alias           /phpmyadmin     /usr/share/phpmyadmin
    Alias           /mysql          /usr/share/phpmyadmin
</VirtualHost>

<VirtualHost *:80>
    ServerName              webmin.example.com
    ProxyRequests           Off
    ProxyPreserveHost       On

    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPass           /               http://localhost:10000/
    ProxyPassReverse    /               http://localhost:10000/
</VirtualHost>
    
por ahmet 31.03.2014 / 16:40

2 respostas

2

Coloque os novos locais dentro do bloco VirtualHost superior:

<VirtualHost *:80>
    ServerName              test1.example.com
    ProxyRequests           Off
    ProxyPreserveHost       On

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass           /           http://localhost:8080/
    ProxyPassReverse    /           http://localhost:8080/

    ProxyPass           /admin/     https://localhost:4848/
    ProxyPassReverse    /admin/     https://localhost:4848/

    ProxyPass           /phpmyadmin/     https://localhost:80/phpmyadmin/
    ProxyPassReverse    /phpmyadmin/     https://localhost:80/phpmyadmin/

    ProxyPass           /app1/     https://localhost:8080/app1/
    ProxyPassReverse    /app1/     https://localhost:8080/app1/

    ProxyPass           /app2/     https://localhost:8090/app2/
    ProxyPassReverse    /app2/     https://localhost:8090/app2/
</VirtualHost>
    
por 31.03.2014 / 16:57
0

Como o @ josh-jolly sugere… colocar as várias declarações de proxy em um único VHost é útil, já que sua configuração tem vários VHosts, todos escutando absolutamente qualquer coisa na porta 80.

ORDEM BÁSICA DE COMPLEXIDADE

No entanto, a recomendação de Josh não se comunica (e ilustra incorretamente em seu exemplo) é que o mod_proxy, como mod_rewrite, processa os padrões fornecidos na ordem em que são recebidos.

O que isto significa é que se você colocar as seguintes linhas antes do outro ProxyPass / ProxyPassReverse bloquear que todo o tráfego será pego por este padrão.

ProxyPass           /           http://localhost:8080/
ProxyPassReverse    /           http://localhost:8080/

Provavelmente é por isso que todo o tráfego estava sendo enviado para a Glassfish, em vez do tráfego desejado para o PHPMyAdmin.

ORDEM DE COMPLEXIDADE NESTADA

Da mesma forma, você deve ter cuidado com as regras de ordem de complexidade dos padrões de URL que deseja rotear de forma diferente, mas que estão aninhados.

O exemplo a seguir mostra uma ordem mal elaborada do conjunto de regras de complexidade.

ProxyPass           /myapp          http://localhost:9090/
ProxyPassReverse    /myapp          http://localhost:9090/

ProxyPass           /myapp/images   http://localhost:8080/
ProxyPassReverse    /myapp/images   http://localhost:8080/

Neste exemplo, todo o tráfego fluiria para a porta 9090 porque ambos os URLs contatam /myapp , mas mod_proxy correspondia ao padrão mais básico antes de poder chegar ao padrão /myapp/images .

Ordenar os blocos da seguinte maneira permitirá que os dois padrões sejam correspondidos adequadamente devido ao nível decrescente de complexidade nos padrões de URL.

ProxyPass           /myapp/images   http://localhost:8080/
ProxyPassReverse    /myapp/images   http://localhost:8080/

ProxyPass           /myapp          http://localhost:9090/
ProxyPassReverse    /myapp          http://localhost:9090/

BONS HÁBITOS

  1. Inclua comentários nas suas configurações do VHost. Você não será sempre a pessoa que está atualizando ou gerenciando-os.
  2. ProxyPass e ProxyPassReverse devem sempre corresponder. Eu nunca encontrei um uso válido onde as duas diretivas devam diferir. Isso é especialmente verdadeiro ao incluir ou não incluir uma barra no padrão de URL.
  3. Agrupe as diretivas relacionadas e separe-as visualmente com algum tipo de bloco de comentários. Isso é especialmente útil para configurações VHost grandes ou complexas. Mas quando as práticas como um hábito facilitarão muito a sua vida.
por 15.04.2018 / 17:06