Aqui está o problema: (sou novo no NGinx, li sobre isso, mas ainda não encontrei minha solução funcional.)
Estou em um sistema Windows.
O sistema de arquivos dos meus projetos está localizado lá:
E:/www/
aqui está uma pasta do projeto que tentarei acessar posteriormente neste exemplo:
E:/www/projectTest
Eu tenho um servidor Apache funcionando bem. Gostaria de configurar um servidor Nginx em paralelo, por isso configurei meu nginx usando outra porta (veja o arquivo de configuração abaixo).
Os arquivos Nginx estão lá:
E:/nginx/
Copiei um php lá:
E:/nginx/php/
Aqui está meu exemplo 'index.php' que coloco em minhas pastas atuais para testar minha configuração de php e nginx:
<?php
echo "THIS IS A TEST";
?>
Aqui está meu arquivo nginx.conf (removi as linhas 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 tudo está funcionando bem, o que significa que se eu quiser acessar meu 'localhost:8111/index.php' ou 'localhost:8111/projectTest/index.php', recebo o 'index.php' que coloquei lá e o o texto "ISTO É UM TESTE" aparece na minha tela.
MAS :
Percebi que, quando abro o Firebug para testar minha página, sempre recebo esta mensagem de erro (MESMO SE EU OBTER MINHA 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
Aqui está como eu inicio o Nginx na linha de comando:
E:\nginx>nginx.exe
E:\nginx\php>php-cgi.exe -b 127.0.0.1:9000 -c e:/nginx/php/php.ini
em php.ini:
doc_root = "E:/www"
extension_dir = "E:/nginx/php/ext"
error_reporting = E_ALL
Deve haver algo errado na minha configuração do nginx, sou vindo do Apache então estou muito confuso com esse arquivo .conf, li muitas coisas sobre ele mas ainda não estou nada confortável com o "root" ou " alias" e com a coisa do php fast-cgi...
Obrigado pela leitura/ajuda/conselhos
Responder1
Existem vários problemas na sua configuração:
- Você especifica
root
no nível do servidor e depois especificaalias
emlocation
blocos. Isso não é errado por si só, mas causa confusão facilmente.
Se todos os arquivos do seu projeto estiverem abaixo de E:/www
, eu usaria estes para remover tanto o location
bloco com alias
blocos, quanto configuraria apenas root E:/www
dentro do server
bloco.
- Você especifica
root
a diretiva dentro do seu.php
bloco de processamento. Isso não vai funcionar.
Se você não tiver nenhum requisito especial para o seu servidor web, eu usaria esta configuração 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;
}
Com esta configuração, o nginx procurará seus arquivos a serem servidos no E:/www
diretório e passará todos os arquivos PHP para PHP-FPM para execução.