2010-02-10 15 views
13

Ho il mio sito Web principale e wordpress in diverse directory sul mio server su cui uso nginx come server web. Il sito principale è in/home/me/www e Wordpress è in/home/me/wordpress. Ho bisogno di averli in directory separate in questo modo per una ragione particolare. Come posso specificarlo nel file di configurazione di nginx? Al momento ho il seguente e non funziona:Servire file php da diverse posizioni in nginx

location/{ 
    root /home/me/www; 
    index index.php index.html index.htm; 
} 

location /blog { 
    root /home/me/wordpress; 
    index index.php index.html index.htm; 
} 

location ~ \.php$ { 
    set $php_root /home/me/www; 
    if ($request_uri ~ /blog) { 
     set $php_root /home/me/wordpress; 
    } 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    include /etc/nginx/fastcgi_params; 
} 

Attualmente restituisce HTTP 404 quando provo ad accedere http://mydomain/blog

risposta

11

Partenza this question e la Nginx Manual.

Provare a cambiare la vostra linea blog a:

location ^~ /blog/ { 
    root /home/me/wordpress; 
    index index.php index.html index.htm; 
} 
+1

Grazie per la risposta! In realtà, la domanda che hai indicato è quella che ho chiesto molto tempo fa! Non ho mai avuto modo di lavorare in base alla risposta. Solo oggi l'ho fatto funzionare. Ho pubblicato un commento su quella risposta. – ErJab

2

Ho lottato con questo per ore e che finalmente raggiunto le configurazioni di lavoro come il seguente:

location /php-app { 
    passenger_enabled off; 
    alias /path/to/php-app/$1; 
    index index.php index.html; 
    try_files $uri $uri/ @rewrite; 
    } 

    location @rewrite { 
    rewrite ^/php-app(.*)$ /index.php?q=$1 last; 
    } 

location ~ \.php$ { 
    alias /path/to/php-app/$1; 
    rewrite ^/php-app(.*)$ $1 last; 
    passenger_enabled off; 
    fastcgi_pass unix:/tmp/php-fpm.socket; 
    fastcgi_index index.php; 
    include /etc/nginx/fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME /path/to/php-app$fastcgi_script_name; 
    fastcgi_intercept_errors on; 
    } 
Problemi correlati