ProxyPass: reindirizza l'URL della directory su una porta non standard


13

Ho cercato su Google e non ho avuto molto successo nel trovare una risposta. Sto eseguendo un server su Ubuntu e ho programmi installati che utilizzano varie porte non standard. Ognuno usa una porta diversa, nel mio caso sono 9090, 9091, 9092, 9093 e 9094. Ho impostato un server Apache e ho un nome di dominio che ora può raggiungere il mio server invece di dover digitare il mio indirizzo IP. Quello che sto cercando è un modo per creare directory che possano puntare alle diverse porte che ho elencato. Voglio qualcosa del tipo:

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

Alcune porte sono su SSL, altre no, le ho semplicemente messe in ordine (9090-9094) per facilità d'uso da parte mia. Vorrei che / app1 puntasse alla porta SSL 9090, / app2 puntasse alla porta SSL 9091 e / app3 puntasse alla porta non SSL 9092. C'è un modo semplice per farlo? Ho provato ad aggiungere ProxyPass e simili sulla base di altri post, ma nulla ha funzionato. Devo aggiungere un nuovo sito?

Inoltre, se ciò comporta la modifica dei file, cosa che mi aspetto, sarebbe molto apprezzato se si potesse elencare la posizione predefinita del file e dove aggiungere le cose. Continuavo a vedere post che dicevano di aggiungere ProxyPass, quindi ho pensato che fosse all'interno di VirtualHost, ma non ero del tutto sicuro. Fondamentalmente, so molto poco sulla configurazione del web server e devo essere trattato come tale.

Mi scuso per eventuali tag errati e apprezzo il tempo impiegato per leggere il post e qualsiasi aiuto tu possa fornire.

EDIT: per chiarimenti, le applicazioni sono già accessibili attraverso https://www.mydomain.com:9090, ecc. Vorrei solo un modo per utilizzare https://www.mydomain.com/appNameper raggiungere la stessa posizione / pagina pubblicata da tali applicazioni.

EDIT 2: Da / etc / apache2 / siti-disponibili / impostazione predefinita

<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>

Puoi pubblicare l'output delle direttive di configurazione che hai usato per configurarlo? Se si trovano all'interno di un vhost, puoi pubblicare l'intero vhost?
Marcos Velazquez,

Impostare cosa? Le porte? Le porte sono tutte configurate tramite l'interfaccia utente dei rispettivi programmi e sto cercando un modo per evitare di dover digitare le porte quando accedo a ciascuna applicazione sul mio server. Riesco a scavare tra le applicazioni per vedere cosa riesco a trovare, ma le porte sono di solito solo archiviate in un file config.ini
Serneum

No, non quello. Volevo dire che, se stai usando ProxyPass e le altre cose, devi averle inserite all'interno di un vhost, giusto? In tal caso, è possibile pubblicare l'intero contenuto del vhost se possibile? vale a dire <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
Marcos Velazquez, il

Ho annullato la maggior parte delle mie modifiche per ottenere una tabula rasa prima di chiedere aiuto. Ho appena aggiunto il file / etc / apache2 / sites-available / default che ho e ho aggiunto le cose Proxy alla fine in base a quello che avevo visto in vari altri siti / ricerche
Serneum

Risposte:


13

Assicurati che i seguenti moduli apache siano installati e caricati:

mod_proxy
mod_proxy_http
mod_ssl

Puoi controllare eseguendo il seguente comando come root (supponendo che httpd sia nel tuo $ PATH)

httpd -t -D DUMP_MODULES

Successivamente, prova a modificare la configurazione come segue:

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

Il proxy ora dovrebbe funzionare se visiti http://localhost/app1o http://mydomain.com/app1presumi che mydomain.com punti a localhost.


Stesso problema di prima, non ho idea di come installare mod_proxy e a2enmod mod_proxy dice che mod_proxy non esiste. Continuerò a cercare come ottenere quelle 3 mod in modo da poter far funzionare le cose. Detto questo, ho proxy, proxy_http e ssl in esecuzione in questo momento. Se quelli sono ciò di cui ho bisogno, allora questa soluzione sembra non funzionare. Ricevo un messaggio proibito che presumo possa essere correlato a quel "Consenti da 127.0.0.1" ma non sono del tutto sicuro
Serneum

Nota a margine, mydomain.com punta al mio IP esterno e non a localhost. Ho provato a cambiare localhost: 9090 nel mio ip: 9090 ma senza successo. "Consenti da" e " localhost " accanto a ProxyPass sono relativi al server o relativi a ciò che sta tentando di accedervi?
Serneum,

Ha funzionato facendo Consenti da tutti temporaneamente. Il rovescio della medaglia è che nessun css, ecc. Appare sulla pagina, ma questo è un problema completamente separato che esaminerò da solo. Grazie.
Serneum,

A quale file di configurazione devo aggiungere 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,

Le risorse della pagina che non vengono visualizzate potrebbero non essere un problema separato. La direttiva ProxyPass qui si applica solo al documento (app1). Alla directory Pro1 app1 con tutto il suo contenuto, aggiungi barre finali. ProxyPass /app1/ https://localhost:9090/e lo stesso per ProxyPassReverse se utilizzato. E in secondo luogo, aggiungere il reindirizzamento di RewriteRule: RewriteRule ^/app1$ /app1/ [R]poiché / app1 non verrebbe sottoposto a proxy.
papo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.