Вот проблема: (Я новичок в 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 ...
Спасибо за чтение / помощь / советы
В вашей конфигурации есть несколько проблем:
root
на уровне сервера, а затем укажите alias
в location
блоки. Само по себе это не так, но легко вызывает путаницу.Если все файлы вашего проекта находятся под E:/www
, Я бы использовал их, чтобы удалить как location
блок с alias
блоков, и установит только root E:/www
внутри server
блок.
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 для выполнения.