Der Standard-Root von nginx gibt auf Port 80 404 zurück.

Der Standard-Root von nginx gibt auf Port 80 404 zurück.

Ich habe ein Problem, wenn ich versuche, meinen Server nur über die IP auf Port 80 zu erreichen.

Wenn ich zur IP gehe, erhalte ich die Nginx 404-Fehlerseite.

So sieht meine Standardkonfiguration aus:

# You may add here your
# server {
#       ...
# }
# statements for each of your virtual hosts to this file


server {
        listen    80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6
        # Document root
        root /var/www/default;
        index index.html index.htm;

        # Make site accessible from http://localhost/
        server_name localhost;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        # Only for nginx-naxsi : process denied requests
        #location /RequestDenied {
                # For example, return an error code
                #return 418;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        #error_page 500 502 503 504 /50x.html;
        #location = /50x.html {
        #       root /usr/share/nginx/www;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #       fastcgi_split_path_info ^(.+\.php)(/.+)$;
        #       # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
        #       fastcgi_pass unix:/var/run/php5-fpm.sock;
        #       fastcgi_index index.php;
        #       include fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

Darin /var/www/defaultbefindet sich eine Datei namens index.html. Jetzt kommt der seltsame Teil. Wenn ich den Abhörport auf 8888nginx ändere, wird die index.html korrekt bereitgestellt. Ich habe nur 3 Sites und die anderen sind virtuelle Hosts, sie haben also keine Abhördirektive. Ich habe den Ordner im Moment /var/www/defaultauf just eingestellt, gibt aber trotzdem auf Port zurück .chmod 77740480

Bearbeiten: Ich habe das Fehlerprotokoll von Nginx überprüft und dort stand Folgendes: 2014/04/08 09:30:21 [error] 3349#0: *1 "/etc/nginx/html/index.html" is not found

Dann stellt sich die Frage, wo diese Konfiguration ist, die besagt, dass dies /etc/nginx/html/index.htmldie Standard-Root ist?

Antwort1

Sie haben diese default_serverOption in Ihrer listenAnweisung nicht. Daher entspricht die Anforderung einem anderen virtuellen Host in Ihrer Nginx-Konfiguration.

Versuchen Sie dies als Ihre Abhörzeile:

listen 80 default_server;

Dann müssen Sie sie möglicherweise default_servervon anderen virtuellen Hosts entfernen, wenn diese über diese Definition verfügen.

Eine andere Möglichkeit könnte sein, dass Sie mit 127.0.0.1oder auf den Server zugegriffen haben localhost. Dies server_name localhostbedeutet, dass der virtuelle Host nur verwendet wird, wenn localhostin der URL verwendet wird.

verwandte Informationen