Ошибка Nginx 404 с существующими URL-адресами Angular 2 в одностраничном приложении с маршрутизацией

У меня есть одностраничное приложение angular 2, которое использует маршрутизацию. Когда я нажимаю свой базовый URL example.com, страница загружается правильно. Однако example.com/dashboard приводит к ошибке 404.

Журналы:
2017/02/14 05:37:22 [warn] 680#680: conflicting server name “example.com” on 0.0.0.0:80, ignored
2017/02/14 05:37:22 [warn] 680#680: conflicting server name “www.example.com” on 0.0.0.0:80, ignored
2017/02/14 05:37:22 [warn] 680#680: conflicting server name “example.com” on [::]:80, ignored
2017/02/14 05:37:22 [warn] 680#680: conflicting server name “www.example.com” on [::]:80, ignored
2017/02/14 05:48:43 [error] 997#997: *1 open() “/var/www/example.com/html/dashboard” failed (2: No such file or directory), client: 41.180.12.42, server: example.com, request: “GET /dashboard HTTP/1.1”, host: “example.com
2017/02/14 05:49:03 [error] 997#997: *1 open() “/var/www/example.com/html/dashboard” failed (2: No such file or directory), client: 41.180.12.42, server: example.com, request: “GET /dashboard HTTP/1.1”, host: “example.com

Страница dashboard.html не существует, потому что я использую маршрутизацию angular, и я создал приложение с помощью webpack.

Вот мой серверный блок:
server {
listen 80;
listen [::]:80;

        root /var/www/example.com/html;

    index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
            try_files $uri $uri/ =404;
         }
}

Буду благодарен за любую помощь

1 симпатия

Вместо того, чтобы использовать:

try_files $uri $uri/ =404;

попробуйте:

try_files $uri $uri/ /index.html;

Это предполагает, что Angular настроен для обработки запросов, отправляемых в index.html, и соответствующим образом маршрутизирует все запросы.

1 симпатия

Спасибо большое, теперь заработало!

1 симпатия