2012-07-27 17 views
6

Necesito ayuda para configurar nginx para cargar archivos desde una carpeta diferente. Aquí está mi config:¿Cómo configuro nginx para cargar try_files desde una carpeta diferente?

index index.php; 

server { 
    server_name domain.com; 
    root /www/domain.com/www/; 

    location/{ 
      try_files $uri $uri/ /php_www/index.php; 
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass 127.0.0.1:9000; 
      fastcgi_index /php_www/index.php; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_param PATH_INFO $fastcgi_script_name; 
      include /etc/nginx/fastcgi_params; 
    } 

    error_page 404 /404.html; 

    error_log /var/log/nginx/error.log; 

} 

El problema es que/php_www/no se encuentra dentro de la raíz se define en nginx.

tengo 4 carpetas diferentes que tengo que hacer esto con, esto es lo que se ve mi estructura de carpetas como:

/www/domain.com/www/ 
/www/domain.com/php_www/ 
/www/domain.com/content1/ 
/www/domain.com/content2/ 

Lo que estoy tratando de hacer es cuando un visitante va a domain.com/page1/content1/ Quiero cargar contenido de la carpeta content1, por ejemplo. La razón de esto es que tengo varios proyectos de git con repositorios separados ... esto me permitirá impulsar ciertas áreas del sitio web a producción, sin afectar a nada más. Me gustaría no tener todos mis archivos/contenidos accesibles en la carpeta/www también, para que las URL no puedan ser atacadas por la fuerza bruta, buscando contenido.

¡Espero que esto tenga sentido!

Solución de trabajo (sacado de this comentario)

location ^~/{ 
    root /www/domain.com/php_www/; 
    try_files $uri $uri/ /index.php; 
    location ~* \.(?:php|html)$ { 
     try_files $uri =404; 
     fastcgi_pass 127.0.0.1:9000; 
     include /etc/nginx/fastcgi_params; 
    } 
} 

Respuesta

8

Usted puede usar la directiva root dentro location.

+0

cuando lo probé, la configuración no funcionaría a menos que tuviera una directiva 'root' en la sección de configuración del servidor. Entonces, por lo que puedo decir, no se puede meter con 'location /'. – tvpmb

+0

Parece que esta configuación finalmente funcionó: ubicación^~/{ root /www/domain.com/php_www/; try_files $ uri $ uri//index.php; ubicación ~ * \. (?: php | html) $ { try_files $ uri = 404; fastcgi_pass 127.0.0.1:9000; incluyen/etc/nginx/fastcgi_params; } } – tvpmb

Cuestiones relacionadas