0

我制作了一个 Angular 应用程序 我的 Angular 应用程序正在 nginx 服务器上运行。当我输入“http: //.8.100.248:30749”时,它显示 nginx 正在运行。(显示默认 index.html)。但是我的应用程序存在于html具有文件夹名称的文件夹中test。所以我的应用程序出现在“html -> test-> index.html”中;当我输入“http: //.8.100.248:30749/text/index.html”时,它会显示我的主页。现在我可以在按钮单击示例中从一个页面导航到另一个页面。http:// .8.100.248:30749/test/page_1**。但是当我重新加载这个页面时http://**.8.100.248:30749/test/page_1nginx 显示我404页面

所以当我输入 http://**.8.100.248:30749/test/index.html。.我的应用程序在浏览器上运行。但是当我从一个页面路由到另一个页面时,reload我的页面给了我404示例 ( http://**.8.100.248:30749/test/page_1)。

当我重新加载我的角度路由页面时,Nginx 给了我 404。所以我想改变nginx配置

     location / {
           root   /usr/share/nginx/html;
           index  index.html index.htm;
   }

你能给我建议一下吗?? 它的行为是因为这个位置没有 index.html 文件 ( http://**.8.100.248:30749/test/page_1)

见更新

location / {
           root   /usr/share/nginx/html;
           index  index.html index.htm;
           try_files $uri $uri/ /index.html;
   }

新更新

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

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

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

1 回答 1

0

这是因为最初,由于 Angular 路由,您可以导航,但是,在页面刷新时,请求再次通过 Nginx,Nginx 无法找到路由。

将此添加到您的 Nginx 配置中:

try_files $uri $uri/ /index.html;

解决您的问题的示例 Nginx 服务器块如下:

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/ /index.html;
     }
}

更新 :

由于您的 index.html 位于 test 目录中,因此请使用此

try_files $uri $uri/ /test/index.html;

于 2018-09-11T06:01:14.823 回答