2017-11-02 2 views
0

Ich habe eine eckige 4 SPA App und ich benutze Docker für die Produktion. Sieht soweit gut aus. Via Terminal gehe ich in /dist Ordner und von dort lasse ich Docker Punkt auf den Inhalt der dist mit dem folgenden Befehl: docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html nginx:alpineWie umgehen Sie den Fehler 404 auf Nginx?

Ich nenne: localhost:9090 auf den Browser und die App zugreifen können. Das Problem ist, wenn ich die Seite noch einmal und/oder als spezifische Route neu lade, dann bekomme ich 404 Not Found und die Nginx-Version z. nginx/1.13.5.

Ich habe dieses Problem gesucht und gefunden: 404 not found error on Nginx Ask, aber leider keine Lösung.

Wie umgehen Sie das und vermeiden Sie den Fehler 404? Ist es eine Config-Schritte, die ich bearbeiten muss?

Antwort

1

Das Problem ist, dass in der Standardkonfiguration Nginx nur die index Direktive verwendet. Was Sie brauchen, ist die try_files Direktive, die zuerst die uri dann wird es gehen, um die index.html

Um dies zu tun, müssen Sie Ihre eigenen Standard-Host-Konfiguration übergeben. So etwas wie das Folgende sollte funktionieren. Dies basiert auf Nginx's Docker Github

server { 
    listen  80; 
    server_name localhost; 
    root /usr/share/nginx/html; 
    index index.html index.htm; 

    location/{ 
    try_files $uri /index.html; 
    } 
} 

Danach ist es sollte nur als Volume die Datei machen werden in der richtigen Stelle.

docker run -d -p 9090:80 -v $(pwd):/usr/share/nginx/html -v (path_to_your_config):/etc/nginx/conf.d/default.conf nginx:alpine

+0

Großartig, ich werde es versuchen. –

+0

Ich kann die Standardkonfiguration des virtuellen Hosts einfach nicht finden. Ich bin ein Mac-Benutzer und normalerweise die Standard-'nginx.conf' auf dem Mac ist:'/usr/local/etc/nginx/nginx.conf', aber ich kann es dort nicht finden. Irgendein Hinweis? –

+0

Sie erstellen die Datei so, wie ich es in Ihrem Projektstamm vorgeschlagen habe. Dann geben Sie das rein. Verwechseln Sie nicht die nginx.conf im Container. Ich habe docker aus der Wurzel meines Projekts ausgeführt, um dies zu testen, indem ich 'docker run -d -p 9090: 80 -v $ (pwd)/dist:/usr/teilen/nginx/html -v $ (pwd)/test. conf: /etc/nginx/conf.d/default.conf nginx: alpin' –