Nginx 1.8 配置問題
這是問題所在:(我是 NGinx 的新手,請閱讀它,但還沒有找到我的工作解決方案。)
我在Windows系統上。
我的項目文件系統位於那裡:
E:/www/
這是一個項目文件夾,我將在此範例後面嘗試訪問:
E:/www/projectTest
我有一個執行良好的 apache 伺服器。我想並行設置一個 Nginx 伺服器,這就是我使用另一個埠配置我的 nginx 的原因(請參閱下面的配置文件)。
Nginx 文件在那裡:
E:/nginx/
我在那裡複製了一個php:
E:/nginx/php/
這是我放置在目前文件夾中以測試我的 php 和 nginx 配置的範例“index.php”:
<?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”或“感到不舒服”別名”值,並使用 fast-cgi php 的東西……
感謝閱讀/幫助/建議
您的配置中有幾個問題:
- 您
root
在伺服器級別指定,然後alias
在location
塊中指定。這本身並沒有錯,但很容易引起混亂。如果您的所有項目文件都在 下
E:/www
,我將使用這些刪除帶有塊的location
塊alias
,並且只root E:/www
在server
塊內設置。
- 您在處理塊內指定
root
指令。.php
那是行不通的。如果您對 Web 伺服器沒有任何特殊要求,我會將此設置用於 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 以執行。