Apache ProxyPass por nome de host dinâmico

1

Estou tentando configurar o Apache como proxy para um servidor interno com base em nomes de host dinâmicos e usando outras portas. Parece ser um pouco complicado demais para mim. Isso é o que eu tenho:

<Location /awesomewebapp>
ProxyPass http://[internalservername]:8080/awesomewebapp
ProxyPassReverse http://[internalservername]:8080/awesomewebapp
</Location>

Mas isso não é (obviamente) dinâmico. Tenho trabalhado em regras de reescrita, etc., mas não consegui fazê-lo funcionar. O que eu realmente preciso é algo como:

^/[internalservername]/awesomewebapp
      proxy internally to
http://[internalservername]:8080/awesomewebapp

Obrigado antecipadamente

    
por JCS81 21.03.2017 / 13:51

2 respostas

0

Minha "solução" anterior ainda não estava funcionando corretamente, então a excluí para evitar confusão. Parece não ser possível do jeito que eu quero, mas uma pequena solução alternativa usando um subdomínio em vez de subdiretório ainda faz com que seja rock.

RewriteCond %{HTTP_HOST} ([^.]+)
RewriteRule ^/(.*) http://%1:8080/$1 [P]

Fonte: link

    
por 21.03.2017 / 16:14
0

Você pode usar o RewriteRule para fazer proxy de uma solicitação. A documentação do apache para usar mod_rewrite como proxy mostra o seguinte:

Description:

mod_rewrite provides the [P] flag, which allows URLs to be passed, via mod_proxy, to another server. Two examples are given here. In one example, a URL is passed directly to another server, and served as though it were a local URL. In the other example, we proxy missing content to a back-end server.

Solution:

To simply map a URL to another server, we use the [P] flag, as follows:

RewriteEngine on RewriteBase "/products/" RewriteRule "^widget/(.*)$" "http://product.example.com/widget/$1" [P] ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

In the second example, we proxy the request only if we can't find the resource locally. This can be very useful when you're migrating from one server to another, and you're not sure if all the content has been migrated yet.

RewriteCond "%{REQUEST_FILENAME}" !-f RewriteCond "%{REQUEST_FILENAME}" !-d RewriteRule "^/(.*)" "http://old.example.com/$1" [P] ProxyPassReverse "/" "http://old.example.com/"

O segundo exemplo, reescrevendo condicionalmente URLs com o sinalizador [P] para representar o pedido, parece o que você precisa.

    
por 21.03.2017 / 14:20