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」或「別名」值,以及fast-cgi php 的東西.....

感謝您的閱讀/幫助/建議

答案1

您的配置有幾個問題:

  1. root在伺服器層級上指定,然後aliaslocation區塊中指定。這本身並沒有錯,但很容易造成混亂。

如果您的所有專案檔案都在 下E:/www,我將使用這些刪除location區塊與區塊,並且僅在區塊內部alias設定。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 執行。

相關內容