Estoy tratando de configurar un alias para que cuando alguien acceda /phpmyadmin/
, nginx lo extraiga /home/phpmyadmin/
de la raíz del documento habitual en lugar de hacerlo. Sin embargo, cada vez que extraigo la URL, me da un 404 en todos los elementos que no se extraen a través de fastcgi. fastcgi parece estar funcionando bien, mientras que el resto no. strace
me dice que está tratando de extraer todo lo demás de la raíz del documento habitual, pero no puedo entender por qué. ¿Alguien puede proporcionar alguna idea?
Aquí está la parte relevante de mi configuración:
location ~ ^/phpmyadmin/(.+\.php)$
{
include fcgi.conf;
fastcgi_index index.php;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name;
}
location /phpmyadmin
{
alias /home/phpmyadmin/;
}
/
en el alias y lalocation
directiva, la solicitud/phpmyadminfile
realmente lo atrapará/home/phpmyadminfile
. En cuanto a por qué la configuración en la pregunta no funciona, me parece correcta, por lo que sospecho que hay otralocation
directiva que no se muestra y que coincide cuando no está prevista. En este caso, comoalias
termina con ellocation
prefijo, los documentos nginx sugieren usar en suroot /home;
lugar .Respuestas:
Descubrí un camino. No estoy seguro de si es el MEJOR, pero ciertamente está funcionando en este momento.
Esto es lo que hice:
fuente
No estoy seguro, pero ¿has intentado escribirlo de esta manera?
Además, ¿cuál es el URI desde el que está intentando acceder?
Por lo que yo entiendo, tienes que usar el URI
y no solo
Puede leer más sobre esto aquí: http://wiki.nginx.org/HttpCoreModule
fuente
Tratar
fuente
La razón por la que esto no funciona es que el servidor está eligiendo la ubicación basada en expresiones regulares y no la ubicación basada en prefijos que tiene el alias.
Solo elegirá uno. Hay un operador que puede usar para obtener una ubicación basada en prefijo para superar a una expresión regular, pero luego encontrará que php no funcionará. La solución será como la respuesta de kervin, donde la expresión regular de PHP está anidada dentro de la ubicación con la directiva alias.
Sin embargo, sospecho que su configuración SCRIPT_FILENAME puede no funcionar allí ya que hay diferentes mayúsculas en la URL y el directorio con alias.
fuente