Nginx和SPA(Angular)

z0qdvdin  于 2023-06-21  发布在  Nginx
关注(0)|答案(3)|浏览(151)

下面是nginx的配置:

server {
  listen       80;
  server_name  localhost;

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

当运行容器并转到http://localhost:8000/app时,它工作得很好,但是如果我导航到一些子路由,例如:http://localhost:8000/app/products(这是一个有效的路由在anuglar路由器),然后重新启动我得到nginx 404错误.
我想我的nginx配置有问题。任何帮助将不胜感激。

t98cgbkg

t98cgbkg1#

尝试将try_files行更改为try_files $uri $uri/ /index.html?$args;
该指令按照指定的顺序检查文件是否存在,并使用找到的第一个文件进行请求处理。
如果没有找到任何文件,则进行到最后一个参数中指定的uri的内部重定向。这应该是你的SPA应用程序路线。

f0brbegy

f0brbegy2#

这一个终于为我工作了:try_files $uri $uri/ /app/index.html?$args;

rkttyhzu

rkttyhzu3#

我遇到了一个类似的问题,我在我的Nginx配置中添加了try_files $uri $uri//app/index. html,但它没有按预期工作。我也试过try_files $uri $uri/ /app/index.html?$args;,但它仍然没有解决问题。在进一步调查之后,我发现我正在修改/etc/nginx/nginx.conf文件,而Nginx实际上是从**/etc/nginx/conf.d/default.conf**阅读配置。对于任何面临同样问题的人,我提供了下面的工作配置:

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

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

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

我在Docker容器中使用Nginx作为Angular应用程序的Web服务器。

相关问题