Nginx 1.8 Problemas de configuração

2

Aqui está o problema: (Sou novo na NGinx, li sobre isso, mas ainda não encontrei minha solução de trabalho).

Estou em um sistema Windows.

Meu sistema de arquivos de projetos está localizado lá:

E:/www/

aqui está uma pasta do projeto que tentarei acessar mais tarde neste exemplo:

E:/www/projectTest

Eu tenho um servidor apache funcionando bem. Eu gostaria de configurar um servidor Nginx em paralelo, é por isso que eu configurei meu nginx usando outra porta (veja o arquivo de configuração abaixo).

Os arquivos Nginx estão lá:

E:/nginx/

Eu copiei um php lá:

E:/nginx/php/

Aqui está o meu exemplo 'index.php' eu coloco nas minhas pastas atuais para testar minhas configurações de php e nginx:

<?php
    echo "THIS IS A TEST";
?>

Aqui está o 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á correndo bem O que significa que se eu quiser alcançar o meu 'localhost: 8111 / index.php' ou 'localhost: 8111 / projectTest / index.php', eu obtenho o 'index.php' que eu coloquei lá e o texto "ESTE É UM TESTE" aparece na minha tela.

MAS:

Percebi que, quando abro o Firebug para testar minha página, sempre recebo isso como uma mensagem de erro (MESMO QUE POSSUIR 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

no php.ini:

doc_root = "E:/www"
extension_dir = "E:/nginx/php/ext"
error_reporting = E_ALL

Deve haver algo errado na configuração do nginx, Eu estou vindo do Apache, então estou muito confuso com esse arquivo .conf, Eu li muitas coisas sobre isso, mas eu ainda não me sinto confortável com os valores "root" ou "alias", e com a coisa fast-cgi php ...

Obrigado pela leitura / ajuda / conselhos

    
por Julo0sS 04.05.2015 / 12:00

1 resposta

1

Existem vários problemas na sua configuração:

  1. Você especifica root no nível do servidor e, em seguida, especifica alias em location blocks. Isso não é errado por si só, mas causa confusão facilmente.

Se todos os seus arquivos de projeto estiverem em E:/www , eu usaria esses arquivos para remover o bloco location com alias blocks e configuraria apenas root E:/www dentro do bloco server .

  1. Você especifica a diretiva root dentro do bloco de processamento .php . Isso não vai funcionar.

Se você não tem nenhum requisito especial para o seu servidor web, eu usaria esta configuração para o 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 irá procurar seus arquivos para serem entregues no diretório E:/www , e ele passará qualquer arquivo PHP para o PHP-FPM para execução.

    
por 04.05.2015 / 23:15