Nginx-Konfiguration - Serving index.html funktioniert nicht

7

Ich kann nicht herausfinden, wie ich umleiten /soll index.html. Ich habe die Threads zu Serverfault durchgesehen und ich glaube, ich habe jeden Vorschlag ausprobiert, einschließlich:

  • Schreiben Sie die Anweisungen innerhalb von neu location /
  • index index.htmlauf der serverEbene innerhalb location /und innerhalb des statischen Inhalts
  • Verschieben von node.jsProxy-Anweisungen nach location ~ /istatt nach innenlocation /

Offensichtlich stimmt irgendwo anders in meiner Konfiguration etwas nicht. Hier ist meine nginx.conf:

worker_processes  1;

pid        /home/logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include            mime.types;
    default_type       application/octet-stream;
    sendfile           on;
    keepalive_timeout  65;

    error_log   /home/logs/error.log;
    access_log  /home/logs/access.log combined;

    include sites-enabled/*;
}

und meine Serverkonfiguration befindet sich in sites-enabled

server {
  root        /home/www/public;
  listen      80;
  server_name localhost;

  # proxy request to node
  location / {
    index index.html index.htm;
    proxy_set_header   Host             $http_host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header   X-NginX-Proxy    true;

    proxy_pass         http://127.0.0.1:3010;
    proxy_redirect     off;
    break;
  }  

  #  static content
  location ~ \.(?:ico|jpe?g|jpeg|gif|css|png|js|swf|xml|woff|eot|svg|ttf|html)$ {
    access_log  off;
    add_header  Pragma public;
    add_header  Cache-Control public;
    expires     30d;  
  }

  gzip on;
  gzip_vary on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_min_length  1000;
  gzip_disable     "msie6";
  gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}

Alles andere funktioniert gut. Anforderungen werden korrekt an den Knoten weitergeleitet und statischer Inhalt wird korrekt bereitgestellt. Ich muss nur in der Lage sein , Anfragen gemacht weiterleiten /zu /index.html.

Rechnung
quelle
1
Ich bin gespannt, was Sie mit dem root htmlim Standortblock erreichen wollen. Befindet sich Ihre index.html in / home / www / public / html? Ich habe nur absolute Pfade verwendet.
Tfitzgerald
Ich habe das entfernt. Ich habe im Grunde alles versucht, um es zum Laufen zu bringen, und das blieb von einem der offensichtlich fehlgeschlagenen Versuche übrig. Immer noch keine Liebe.
Bill
Gibt es etwas im Fehlerprotokoll? Kannst du sagen, ob es überhaupt versucht, /home/www/public/index.html zu treffen?
Tfitzgerald
Überhaupt nichts im Fehlerprotokoll. Zugriffsprotokoll hat "GET / HTTP/1.1" 404. Nichts deutet darauf hin, dass es sogar versucht, index.html zu treffen. Der Anruf wird schließlich an meinen Knotenserver weitergeleitet, auf dem eine Fehlerseite angezeigt wird.
Bill

Antworten:

10

Grundsätzlich wurde in der rootDirektive (innerhalb des Standortblocks) nicht der vollständige Pfad erwähnt . Außerdem ;fehlt am Ende der indexDirektive ein (könnte ein Tippfehler sein, nginx fängt diese Tippfehler normalerweise ab).

Ihre Serverkonfiguration in Sites-fähigen würde also so aussehen (nach den beiden oben genannten Änderungen) ...

Server {
  root / home / www / public;
  höre 80;
  Servername localhost;
  index index.html index.htm;

  # Proxy-Anfrage an Knoten
  location @proxy {
    proxy_set_header Host $ http_host;
    proxy_set_header X-Real-IP $ remote_addr;
    proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;

    proxy_pass http://127.0.0.1:3010;
    proxy_redirect off;
    brechen;
  }}

  Standort / {
    try_files $ uri $ uri / @proxy;
  }}

# Rest der Konfiguration
# ...
# ...

}}

Pothi Kalimuthu
quelle
Ups, die sind von meinem letzten Versuch übrig geblieben. Ich habe die Conf-Datei oben aktualisiert, um diese Tippfehler zu beheben. Der Versuch, darauf zuzugreifen, /führt immer noch zu einem 404.
Bill
Okay, können Sie die indexAnweisung bitte außerhalb des Standortblocks platzieren? Ich aktualisiere jetzt auch meine Konfigurationsdatei. Vielen Dank.
Pothi Kalimuthu
Nachdem ich Ihren anderen Kommentar zum Serverprotokoll gesehen habe, sehe ich, was falsch ist. Ich aktualisiere jetzt meine Konfiguration für die aktualisierte Konfiguration. Vielen Dank.
Pothi Kalimuthu
Kein Würfel. localhost/index.htmlfunktioniert localhostund führt localhost/immer noch zu einem 404. Das Zugriffsprotokoll gibt immer noch 404 an, das Fehlerprotokoll enthält nichts. /wird immer noch direkt an meinen Knotenserver weitergeleitet.
Bill
Versuchen Sie, die location / { try_files $uri $uri/ @proxy; }oben genannte location @proxyRichtlinie beizubehalten.
Pothi Kalimuthu