2015-01-20 18 views
6

ho Apache 2.4 con PHP 5.5 senza utilizzare php_mod ma con PHP-FPM e mod_proxy_fcgi, così ho aggiunto quanto segue alla vhost:Apache + PHP-FPM Set delega timeout solo per specifiche percorso

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1 

Questo lavorato bene, ma quando ho avuto alcuni problemi con i timeout ho aggiunto il seguente codice al fine di risolvere il problema al file vhost:

<Proxy fcgi://127.0.0.1:7000> 
    ProxySet timeout=3600 
</Proxy> 
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1 

Tuttavia, vorrei aggiungere questo timeout solo al pannello di amministrazione del sito web , che è www.site.com/admin/xxx. Ho provato ad aggiungere il tag location come sotto, ma non ha funzionato (Apache fallisce al riavvio).

<LocationMatch ^/admin/.*\.php(/.*)?$> 
    <Proxy fcgi://127.0.0.1:7000> 
     ProxySet timeout=3600 
    </Proxy> 
</LocationMatch > 
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1 

Prima di tutto, è possibile? Allora quale sarebbe la sintassi corretta?

Molte grazie per il vostro tempo

+0

Perché stai cercando di impostare il timeout sulla pagina di amministrazione? :). So che questa domanda è un po 'stupida, ma forse c'è un'altra soluzione di livello/livello per raggiungere i tuoi bisogni. –

+0

Probabilmente perché desidera mantenere la protezione di un timeout basso sul sito pubblico, ma consente più pagine del pannello amministrativo in esecuzione. Quindi non sta cercando di "impostare" un timeout di amministrazione, sta cercando di "estenderlo" dal default. – scipilot

risposta

0

Basta usare il Proxy wildcard con /admin/*

Mentre questo permetterà qualsiasi script sotto amministrazione per correre con le impostazioni definite, dietro un admin (e presumo di login) muro, non dovrebbe essere un problema

<Proxy "fcgi://127.0.0.1:7000/home/var/www/site/admin/*"> 
    ProxySet timeout=3600 
</Proxy> 

Uso ProxySet al di fuori di una direttiva Proxy

ProxySet nell'ambito di una direttiva Proxy può essere utilizzato senza definire l'URL/bilanciatore/lavoratore. Tuttavia, è necessario che utilizzi ProxySet all'interno di una direttiva Location.

<LocationMatch ^/admin/.*\.php(/.*)?$> 
    ProxySet "fcgi://127.0.0.1:7000" timeout=3600 
</LocationMatch> 

Se apache non riesce ancora all'avvio, controllare i log di Apache, o eseguire strace -Ff apachectl start per trovare il problema, potrebbe essere solo un bug in quella versione di Apache.

Tuttavia, ho il forte sospetto che il tuo LocationMatch regex ^/admin/.*\.php(/.*)?$ sia la causa dell'errore di apache.