Windows

Nginx 1.8 配置問題

  • May 4, 2015

這是問題所在:(我是 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 的東西……

感謝閱讀/幫助/建議

您的配置中有幾個問題:

  1. root在伺服器級別指定,然後aliaslocation塊中指定。這本身並沒有錯,但很容易引起混亂。

如果您的所有項目文件都在 下E:/www,我將使用這些刪除帶有塊的locationalias,並且只root E:/wwwserver塊內設置。

  1. 您在處理塊內指定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 以執行。

引用自:https://serverfault.com/questions/688409