En primer lugar, he intentado buscar preguntas similares, pero las soluciones a esas preguntas eran líneas de código específicas, que no podía personalizar para satisfacer mis necesidades.nginx reescribe todo para index.php excepto whitelist
Tengo una instalación de Codeigniter, y estoy tratando de migrar de Apache a nginx. Sin embargo, en Apache el .htaccess era bastante simple: tomaría una lista blanca y reescribiría todo lo demás en index.php
.
RewriteEngine on
RewriteCond $1 !^(index\.php|css|images|core|uploads|js|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
Sin embargo, en nginx, he probado los try_files si y directivas, así como jugar un poco con ubicaciones, sin ningún resultado. Todavía soy nuevo en la forma en que nginx lee la configuración del servidor, y los tutoriales en línea fueron algo confusos de seguir.
Además, el index.php no estará en la raíz de la tela, pero en un subdirectorio server
.
Debido a esto, también necesita asegurarse de que incluso las peticiones de URI que comienzan con/servidor no vaya al directorio, pero a index.php
Esta es mi configuración de host virtual nginx hasta ahora:
server {
listen 80;
server_name example.com;
root /home/example/public_html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location/{
index index.htm index.html index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/example.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^.*(/|\..*) {
try_files $uri $uri/ /server/index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
que ayuda a redirigir las solicitudes al index.php
, pero no tiene una lista blanca. Agradecería que alguien pudiera generar un ejemplo de trabajo con una breve explicación de lo que hace cada parte.
¡Gracias, eso funcionó! También analizaré la información de pathinfo, parece interesante. – xiankai
http://wiki.nginx.org/IfIsEvil http://wiki.nginx.org/Pitfalls – VBart
De acuerdo con los documentos IfIsEvild, reescriba ... último; es seguro, pero las sugerencias son (por supuesto, esta es una wiki de algún tipo) bienvenida. – complex857