Nginx 1.8 の設定の問題

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」が取得され、画面に「THIS IS A TEST」というテキストが表示されます。

しかし :

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

設定にいくつかの問題があります:

  1. サーバーレベルで指定しroot、次にブロックaliasで指定しますlocation。これ自体は間違いではありませんが、混乱を招きやすくなります。

すべてのプロジェクト ファイルが の下にある場合は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 に渡して実行します。

関連情報