Ich habe erfolgreich installiert Nginx, PHP-FPM verwendet, aber leider habe ich einige Probleme beim Laden meiner PHP-Dateien aus einem anderen Verzeichnis. Alle meine Dateien befinden sich in Unterverzeichnissen in/var/www/html (zB befinden sich alle CSS-Dateien in/var/www/html/css, alle Javascript-Dateien befinden sich in/var/www/html/js, alle php -Dateien befinden sich in/var/www/html/php). zu Demnach ich den Root-Verzeichnis-Pfad für meine PHP-Dateien geändert/var/www/html/php:Nginx: 403 verboten, wenn PHP-Dateien in separaten Verzeichnis
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.php home.php;
server_name _;
location/{
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /var/www/html/php;
include snippets/fastcgi-php.conf;
# # With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
Leider, wenn mein nginx-Server mit meinem Web-Browser zugreifen, ich bin immer Fehler 403 (Verboten). Beim direkten Zugriff auf meine index.php (http://192.168.2.109/index.php) funktioniert alles einwandfrei. Also, ich denke, es bedeutet, dass die Dateiberechtigungen korrekt sind, aber nginx kann das Verzeichnis/var/www/html/php nicht indizieren. Außerdem enthält /var/log/nginx/error.log:
2017/05/28 07:49:56 [Fehler] 13678 # 13678: * 1 Verzeichnisindex von "/ var/www/html /" ist verboten, Auftraggeber: 192.168.2.101, Server: _, Anfrage: "GET/HTTP/1.1", host: "192.168.2.109"
ich habe bereits versucht Autoindex und fügen Sie den Index Spezifizierer in der ermöglichen "location ~ .php $ {" Abschnitt ohne Erfolg. Das Ergebnis ist die gleiche :(
Hat jemand eine Idee hat, was ich falsch mache/fehlt hier Alle Vorschläge in Nginx 403 error: directory index of [folder] is forbidden nicht mein Problem lösen
Ziemlich sicher, dass Sie nur einen Standardindex benötigen? https://stackoverflow.com/questions/10002439/make-index-html-default-but-allow-index-php-to-be-visited-if-typed-in – Joe
Hat nginx eine "DefaultIndex" -Direktive in der Konfigurationsdatei? Der angegebene Link zeigt die Direktive für htaccess, aber ich verwende htaccess nicht. – Nrgyzer
Es wäre keine Nginx-Sache, es wäre eine Webserver-Konfiguration Sache. Ich weiß nicht, wie man es mit allen möglichen Server-Setups macht. Ich weiß, dass eine DirectoryIndex-Deklaration in der .htaccess funktioniert, wenn Sie keinen Index in der URL angeben, aber ich weiß nicht, wie man einen Webserver das automatisch machen lässt. Ich weiß, dass der Server eingestellt werden kann, um einen verbotenen Fehler für das Verzeichnis-Traversal zu werfen, deshalb haben viele Aufstellungsorte gerade eine leere index.html in den Verzeichnissen, in denen Leute nicht herum spielen möchten. – Joe