Aquí está el problema: (Soy nuevo en NGinx, leí sobre esto, pero aún no encontré mi solución funcional).
Estoy en un sistema Windows.
El sistema de archivos de mis proyectos se encuentra allí:
E:/www/
Aquí hay una carpeta de proyecto a la que intentaré acceder más adelante en este ejemplo:
E:/www/projectTest
Tengo un servidor apache funcionando bien. Me gustaría configurar un servidor Nginx en paralelo, por eso configuré mi nginx usando otro puerto (consulte el archivo de configuración a continuación).
Los archivos Nginx están ahí:
E:/nginx/
Copié un php allí:
E:/nginx/php/
Aquí está mi ejemplo 'index.php' que coloco en mis carpetas actuales para probar mi configuración de php y nginx:
<?php
echo "THIS IS A TEST";
?>
Aquí está mi archivo nginx.conf (eliminé las líneas comentadas):
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8111;
server_name localhost;
root E:/nginx/;
index index.php index.html index.htm;
charset utf-8;
location / {
alias E:/www/;
}
location /projectTest/ {
alias E:/www/projectTest/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root ../www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/conf/$fastcgi_script_name;
include fastcgi_params;
}
}
}
Parece que todo está funcionando bien, lo que significa que si quiero acceder a mi 'localhost:8111/index.php' o 'localhost:8111/projectTest/index.php', obtengo el 'index.php' que coloqué allí y el El texto "ESTO ES UNA PRUEBA" aparece en mi pantalla.
PERO :
Me di cuenta de que, cuando abro Firebug para probar mi página, siempre recibo este mensaje de error (INCLUSO SI OBTENGO MI PÁGINA):
NetworkError: 404 Not Found - http://localhost:8111/
//Same error when I call index.php in url :
NetworkError: 404 Not Found - http://localhost:8111/index.php
//Same error when I call my projectTest folder :
NetworkError: 404 Not Found - http://localhost:8111/projectTest/
//Same error when I call my index.php in projectTest url :
NetworkError: 404 Not Found - http://localhost:8111/projectTest/index.php
Así es como inicio Nginx en la línea de comando:
E:\nginx>nginx.exe
E:\nginx\php>php-cgi.exe -b 127.0.0.1:9000 -c e:/nginx/php/php.ini
en php.ini:
doc_root = "E:/www"
extension_dir = "E:/nginx/php/ext"
error_reporting = E_ALL
Debe haber algo mal en mi configuración de nginx, vengo de Apache así que estoy muy confundido con este archivo .conf, leí muchas cosas al respecto pero todavía no me siento nada cómodo con la "root" o " valores de alias", y con lo de php fast-cgi...
Gracias por leer/ayuda/consejos
Respuesta1
Hay varios problemas en su configuración:
- Usted especifica
root
en el nivel del servidor y luego especificaalias
enlocation
bloques. Esto no es malo en sí mismo, pero causa confusión fácilmente.
Si todos los archivos de su proyecto están en E:/www
, los usaría para eliminar el location
bloque con alias
los bloques y los configuraría solo root E:/www
dentro del server
bloque.
- Usted especifica
root
la directiva dentro de su.php
bloque de procesamiento. Eso no funcionará.
Si no tiene ningún requisito especial para su servidor web, usaría esta configuración para PHP:
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Con esta configuración, nginx buscará los archivos que se entregarán desde E:/www
el directorio y pasará los archivos PHP a PHP-FPM para su ejecución.