2014-11-10 20 views
13

Ho seguito la configurazione dell'host virtuale. Il risultato desiderato è:Escludere un alias da virtualhost proxypass

  1. Se qualcuno richiede http://test.myserver.com/myapp, apache serve lui da/var/www/myapp
  2. E se http://test.myserver.com/ è richiesto, apache reindirizza alla porta 8069.

Il secondo funziona, ma il primo non lo è. Qualcuno può aiutare per favore!

<VirtualHost *:80> 
     ServerName test.myserver.com 

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

     ProxyPass/http://localhost:8069/ 
     ProxyPassReverse/http://localhost:8069/ 

</VirtualHost> 

risposta

30

Ecco come sono stato in grado di ottenere il risultato desiderato. Di seguito è riportata la configurazione di lavoro in cui ProxyPassMatch ^/myapp ! ha fatto il trucco e ad eccezione del (server-address)/myapp, tutte le richieste vengono proxy per l'altro server che è open-erp esecuzione a porta 8069:

<VirtualHost *:80> 
     ServerName test.myserver.com 

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

     ProxyPassMatch ^/myapp ! 
     ProxyPass/http://localhost:8069/ 
     ProxyPassReverse/http://localhost:8069/ 


    CustomLog /var/log/apache2/access.log common 
    ErrorLog /var/log/apache2/error.log 

</VirtualHost> 
+1

Molto utile in combinazione con la crittografia di let di verifica degli host virtuali che utilizzano il proxy inverso, ma si desidera comunque utilizzare la verifica automatica, e. g. Alias ​​/.well-known "C: /apache24/htdocs/.well-known" \t \t \t \t \t ... \t AndyB

+0

@ AndiB Il problema è che non può utilizzare ProxyPass. Solo e questo non funziona con Alias. Alla ricerca di una soluzione ... – ygoe

+1

Ecco un consiglio di configurazione più approfondito: https://github.com/certbot/certbot/issues/2164 - La chiave è usare 'ProxyPass/percorso/url' e non' ProxyPass/url' come facevo prima. Ora funziona per me. – ygoe

8

Invece di utilizzando: ProxyPassMatch ^/myapp ! si potrebbe avere semplicemente aggiunto un'altra direttiva ProxyPass prima di quella che definisce /, in questo modo:

ProxyPass /myapp ! 
ProxyPass/http://localhost:8069/ 

Dal ProxyPass rispetta la precedenza (la prima partita sarà processata), sarà correttamente reindirizzare alla directory invece di proxy .

Problemi correlati