Назад | Перейти на главную страницу

Проблемы конфигурации 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. Вы указываете 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 для выполнения.