Nginx 配置 - 提供 Angular2 应用

Nginx 配置 - 提供 Angular2 应用

我有一个 Angular2 SPA,我将语言作为后缀添加到 URL,如下所示:

www.mywebsite.com/en

如果我以这种方式直接从 nodejs web 服务器加载 -> www.mywebsite.com:4500/en,那么请求当然会被 angular 正确处理。

现在,当我使用 nginx 时,我不知道如何告诉 nginx 带有语言后缀的 URL 必须由 index.html 处理。

在 nginx 配置文件中,我设置了一些其他位置,它们运行良好。只需要这个配置。

通过以下设置,nginx回复404,并且nginx错误日志文件报告:

appfolder/dist/client/en(没有此文件或目录)

server {

    listen 80 default_server;
    listen [::]:80 default_server;
    root /appfolder/dist/client;
    index index.html;

    location ~ /(fr|en|es|it) {       
       root /appfolder/dist/client;
    }


    location /{      
      return 301 /en$uri;
    }

    other location's without conflict with this

} 

我通过谷歌搜索尝试了很多其他配置,但没有结果。

我怎样才能告诉 nginx 我希望带有语言的 URL 必须由索引文件处理?

答案1

我发现了一个似乎有效的解决方案,欢迎提供更好的解决方案

以这种方式设置位置

   location / {}

   location /it {
        alias /project/dronedesign/dist/client;
        index index.html;
        try_files $uri $uri/ /index.html;
    }


    location /en {
        alias /project/dronedesign/dist/client;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

相关内容