Проблемы с конфигурацией Nginx 1.8

Проблемы с конфигурацией Nginx 1.8

Вот в чем проблема: (Я новичок в NGinx, читал об этом, но пока не нашел работающего решения.)

У меня система Windows.

Файловая система моих проектов находится здесь:

E:/www/

Вот папка проекта, к которой я попытаюсь обратиться позже в этом примере:

E:/www/projectTest

У меня есть сервер Apache, который работает нормально. Я хотел бы настроить сервер Nginx параллельно, поэтому я настроил свой nginx, используя другой порт (см. файл конфигурации ниже).

Файлы Nginx находятся здесь:

E:/nginx/

Я скопировал туда php:

E:/nginx/php/

Вот мой пример «index.php», который я размещаю в своих текущих папках для проверки конфигурации PHP и nginx:

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

Вот мой файл nginx.conf (я удалил закомментированные строки):

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;
        }
    }
}

Похоже, все работает нормально. Это значит, что если я захочу открыть свой «localhost:8111/index.php» или «localhost:8111/projectTest/index.php», я получу «index.php», который я там разместил, и на экране появится текст «ЭТО ТЕСТ».

НО :

Я заметил, что когда я открываю Firebug для проверки своей страницы, я всегда получаю следующее сообщение об ошибке (ДАЖЕ ЕСЛИ Я ПОЛУЧАЮ СВОЮ СТРАНИЦУ):

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

Вот как я запускаю Nginx в командной строке:

E:\nginx>nginx.exe
E:\nginx\php>php-cgi.exe -b 127.0.0.1:9000 -c e:/nginx/php/php.ini

в php.ini:

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

Должно быть, что-то не так в моей конфигурации nginx. Я использую Apache, поэтому меня действительно сбивает с толку этот файл .conf. Я много читал о нем, но мне все еще не совсем понятно со значениями «root» или «alias», а также с fast-cgi php...

Спасибо за чтение/помощь/советы

решение1

В вашей конфигурации есть несколько проблем:

  1. Вы указываете rootна уровне сервера, а затем указываете aliasв locationблоках. Это само по себе не является неправильным, но легко вызывает путаницу.

Если все файлы вашего проекта находятся в E:/www, я бы использовал их, удалил бы оба locationблока с aliasблоками и настроил бы только root E:/wwwвнутри serverблока.

  1. Вы указываете rootдирективу внутри вашего .phpблока обработки. Это не сработает.

Если у вас нет особых требований к вашему веб-серверу, я бы использовал следующую настройку для 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;
}

При такой настройке nginx будет искать файлы для обслуживания в E:/wwwкаталоге и передавать все файлы PHP в PHP-FPM для выполнения.

Связанный контент