Nginx 1.8 Konfigurationsprobleme

Nginx 1.8 Konfigurationsprobleme

Hier ist das Problem: (Ich bin neu bei NGinx, habe darüber gelesen, aber noch keine funktionierende Lösung gefunden.)

Ich verwende ein Windows-System.

Das Dateisystem meines Projekts befindet sich dort:

E:/www/

hier ist ein Projektordner, den ich später in diesem Beispiel zu erreichen versuche:

E:/www/projectTest

Bei mir läuft ein Apache-Server einwandfrei. Ich möchte parallel dazu einen Nginx-Server einrichten, deshalb habe ich meinen Nginx mit einem anderen Port konfiguriert (siehe Konfigurationsdatei unten).

Nginx-Dateien sind da:

E:/nginx/

Ich habe dort ein PHP kopiert:

E:/nginx/php/

Hier ist mein Beispiel „index.php“, das ich in meinen aktuellen Ordnern platziere, um meine PHP- und Nginx-Konfiguration zu testen:

<?php
    echo "THIS IS A TEST";
?>

Hier ist meine nginx.conf-Datei (ich habe kommentierte Zeilen entfernt):

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;
        }
    }
}

Es sieht so aus, als ob alles einwandfrei läuft. Das heißt, wenn ich auf „localhost:8111/index.php“ oder „localhost:8111/projectTest/index.php“ zugreifen möchte, erhalte ich die dort platzierte „index.php“ und der Text „DIES IST EIN TEST“ erscheint auf meinem Bildschirm.

ABER :

Mir ist aufgefallen, dass ich beim Öffnen von Firebug zum Testen meiner Seite immer die folgende Fehlermeldung erhalte (AUCH WENN ICH MEINE SEITE ERHALTE):

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

So starte ich Nginx in der Befehlszeile:

E:\nginx>nginx.exe
E:\nginx\php>php-cgi.exe -b 127.0.0.1:9000 -c e:/nginx/php/php.ini

in php.ini:

doc_root = "E:/www"
extension_dir = "E:/nginx/php/ext"
error_reporting = E_ALL

Irgendetwas stimmt wohl nicht mit meiner Nginx-Konfiguration. Ich komme von Apache und bin daher von dieser .conf-Datei völlig verwirrt. Ich habe viel darüber gelesen, bin aber mit den „Root“- oder „Alias“-Werten und der Sache mit Fast-CGI-PHP immer noch nicht ganz vertraut …

Danke fürs Lesen/Hilfe/Ratschläge

Antwort1

Es gibt mehrere Probleme in Ihrer Konfiguration:

  1. Sie geben rootauf Serverebene an und geben dann aliasin locationBlöcken an. Das ist an sich nicht falsch, führt aber leicht zu Verwirrung.

Wenn sich alle Ihre Projektdateien darunter befinden E:/www, würde ich diese verwenden, um sowohl den locationBlock mit den Blöcken zu entfernen, als auch nur innerhalb des Blocks aliaseinzurichten .root E:/wwwserver

  1. Sie geben rootdie Direktive innerhalb Ihres .phpVerarbeitungsblocks an. Das wird nicht funktionieren.

Wenn du keine besonderen Anforderungen an deinen Webserver hast, würde ich dieses Setup für PHP verwenden:

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;
}

Mit dieser Konfiguration sucht nginx in dem Verzeichnis nach Ihren bereitzustellenden Dateien E:/wwwund übergibt alle PHP-Dateien zur Ausführung an PHP-FPM.

verwandte Informationen