ProxyPass: Redirecione o URL do diretório para a porta não padrão

13

Pesquisei no Google e não tive muito sucesso em encontrar uma resposta. Estou executando um servidor no Ubuntu e tenho programas instalados que usam várias portas não padrão. Cada um usa uma porta diferente, no meu caso são 9090, 9091, 9092, 9093 e 9094. Configurei um servidor apache e tenho um nome de domínio que agora pode chegar ao meu servidor em vez de digitar meu endereço IP. O que estou procurando é uma maneira de criar diretórios que possam apontar para as diferentes portas listadas. Eu quero algo como:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

Algumas portas são sobre SSL, outras não, apenas as coloquei em ordem (9090-9094) para facilitar o uso da minha parte. Gostaria que o / app1 aponte para a porta SSL 9090, / app2 para aponte para a porta SSL 9091 e / app3 aponte para a porta não SSL 9092. Existe uma maneira simples de fazer isso? Eu tentei adicionar o ProxyPass e similares com base em outras postagens, mas nada funcionou. Preciso adicionar um novo site?

Além disso, se isso envolver a edição de arquivos, o que espero, será muito apreciado se você puder listar o local padrão do arquivo e onde adicionar coisas. Eu continuava vendo postagens dizendo para adicionar ProxyPass, então eu apenas assumi que ele estava dentro do VirtualHost, mas não tinha certeza. Basicamente, eu sei muito pouco sobre a configuração do servidor web e preciso ser tratado como tal.

Peço desculpas por qualquer tag incorreta e agradecemos o tempo que você levou para ler a postagem e qualquer ajuda que você possa fornecer.

EDIT: Para esclarecimento, os aplicativos já estão acessíveis através de https://www.mydomain.com:9090etc. Gostaria apenas de usar uma maneira https://www.mydomain.com/appNamede chegar ao mesmo local / página publicada por esses aplicativos.

EDIT 2: Em / etc / apache2 / sites-available / default

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>
Serneum
fonte
Você pode postar a saída das diretivas de configuração que você usou para definir isso? Se eles estiverem dentro de um vhost, você pode postar o vhost inteiro?
Marcos Velazquez
Configurar o que? As portas? As portas são todas configuradas através da interface do usuário de seus respectivos programas e estou procurando uma maneira de evitar digitar as portas ao acessar cada aplicativo no meu servidor. Eu posso cavar através das aplicações para ver o que posso encontrar, mas as portas são geralmente apenas armazenado em um arquivo config.ini
Serneum
Não não Isso. Eu quis dizer que, se você estiver usando o ProxyPass e outras coisas, deverá colocá-los dentro de um vhost, certo? Se sim, você pode postar todo o conteúdo do vhost, se possível? ie <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Marcos Velazquez
Eu tinha desfeito a maioria das minhas alterações para obter uma lista limpa antes de pedir ajuda. Acabei de adicionar a etc / apache2 / arquivo / default / sites-available eu tenho e eu adicionei o material Proxy no final com base no que eu tinha visto em vários outros sites / buscas
Serneum

Respostas:

13

Verifique se os seguintes módulos apache estão instalados e carregados:

mod_proxy
mod_proxy_http
mod_ssl

Você pode verificar executando o seguinte comando como root (assumindo que o httpd esteja em seu $ PATH)

httpd -t -D DUMP_MODULES

Depois, tente alterar sua configuração para o seguinte:

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

O proxy agora deve funcionar se você visitar http://localhost/app1ou http://mydomain.com/app1assumir que mydomain.com aponta para localhost.

Marcos Velazquez
fonte
Mesmo problema de antes, não tenho idéia de como instalar o mod_proxy e o a2enmod mod_proxy diz que o mod_proxy não existe. Continuarei procurando como obter esses 3 mods para que eu possa fazer as coisas funcionarem. Dito isto, eu tenho proxy, proxy_http e ssl em execução no momento. Se é disso que eu preciso, essa solução ainda parece não funcionar. Eu recebo uma mensagem Proibida que eu suponho que pode estar relacionado a isso "Permitir de 127.0.0.1", mas eu não sou inteiramente certo
Serneum
Observação: mydomain.com aponta para meu IP externo e não para o host local. Eu tentei mudar o localhost: 9090 para o meu ip: 9090, mas sem sucesso. O "Permitir de" e o " localhost " ao lado do ProxyPass são relativos ao servidor ou relativos ao que está tentando acessá-lo?
Serneum
Consegui fazê-lo, permitindo Permitir temporariamente. A desvantagem é que nenhum CSS, etc, aparece na página, mas essa é uma questão totalmente separada que analisarei por conta própria. Obrigado.
Serneum
A qual arquivo de configuração eu preciso adicionar ProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090?
kiltek
Os recursos da página que não são exibidos podem não ser um problema separado. A diretiva ProxyPass aqui se aplica apenas ao documento (app1). No diretório proxy app1 com todo o seu conteúdo, adicione barras finais. ProxyPass /app1/ https://localhost:9090/e o mesmo para ProxyPassReverse, se usado. E em segundo lugar, adicione o redirecionamento RewriteRule: RewriteRule ^/app1$ /app1/ [R]como / app1 não seria usado como proxy.
papo