Подтвердить что ты не робот

NGINX и Angular 2

Мои текущие пользователи приложений, такие как this/myapp/,/myapp//,/myaapp/dept/

Мое приложение в настоящее время развернуто на внутреннем HTTP-сервере с NGINX. Другой сервер, который принимает внешний трафик, также запускает NGINX и перенаправляет его на внутренний сервер.

Я добавил baseref =/myapp в index.html согласно документации

Если пользователь переходит в http://www.myexternalserver.com/myapp, приложение работает отлично. Если пользователь находится внутри страницы и нажимает на внутреннюю ссылку, например http://www.myexternalserver.com/myapp/myparameter, он работает. URL-адрес браузера изменяется, страница отображается по назначению. Я предполагаю, что он обрабатывается Angular 2.

К сожалению, когда пользователь напрямую вводит URL-адрес: http://www.myexternalserver.com/myapp/myparameter, я получаю ошибку 404, сделанную NGINX.

Я думаю, что мне нужно настроить параметры NGINX, но я не знаю, как изменить конфигурацию NGINX или что добавить в файл-доступ/файл по умолчанию/

4b9b3361

Ответ 1

У меня была такая же проблема и я нашел решение. Однако моя база href имеет значение "/".

Ниже мой nginx.conf:

worker_processes  1;

events {
    worker_connections  1024;
}

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

    server {
        listen       80;
        server_name  mysite.com www.mysite.com;
        root /usr/share/nginx/html;

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

Ответ 2

У меня также были проблемы с этим, теперь это рассматривается в документах angular: https://angular.io/guide/deployment

NGinx: используйте try_files, как описано в веб-приложениях Pattern Controller, изменен для обслуживания index.html:

try_files $uri $uri//index.html;

Ответ 3

У меня была такая же проблема с поддоменом на сайте, размещенном на хостинге HostGator. Кажется, он работает с Apache 2.2.31.

Поиск в конце концов привел меня к "Apache Directives" , что привело меня к "Пользовательские ответы об ошибках" .

Мне удалось исправить мою проблему, создав файл .htaccess в моей поддоменной папке со следующей строкой:

ErrorDocument 404 /index.html

Несмотря на то, что я смотрю на инструменты отладки, я все равно получаю код 404, даже если он преуспевает.

UPDATE:

Была возможность исправить проблему 404, изменив мой .htaccess на следующее:

RewriteEngine On
  # If an existing asset or directory is requested go to it as it is
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
  RewriteRule ^ - [L]

  # If the requested resource doesn't exist, use index.html
  RewriteRule ^ /index.html

Теперь я правильно перенаправляюсь в index.html, а код - 200.