2010-02-10 16 views
13

Tengo mi sitio web principal y wordpress en diferentes directorios en mi servidor en el que utilizo nginx como servidor web. El sitio web principal está en/home/me/www y Wordpress está en/home/me/wordpress. Necesito tenerlos en directorios separados de esta manera por un motivo en particular. ¿Cómo especifico esto en el archivo de configuración nginx? Actualmente tengo el siguiente y no funciona:Sirviendo archivos php desde diferentes ubicaciones en 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; 
} 

actualidad devuelve HTTP 404 cuando intento acceder a http://mydomain/blog

Respuesta

11

Salida this question y la Nginx Manual.

Prueba a cambiar la línea de blog a:

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

Gracias por la respuesta! En realidad, la pregunta que ha señalado es una que le hice hace mucho tiempo. Nunca lo hice funcionar basado en la respuesta. Solo hoy lo tengo para trabajar. He publicado un comentario sobre esa respuesta. – ErJab

2

Luché con esto durante horas de hoy y, finalmente, llegó a las configuraciones de trabajo como las siguientes:

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; 
    } 
Cuestiones relacionadas