首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nginx返回404 Not Found (单页应用)

nginx返回404 Not Found (单页应用)
EN

Stack Overflow用户
提问于 2018-02-17 04:32:39
回答 1查看 1.5K关注 0票数 1

我有一个带有常规浏览器路由器(没有散列)的单页应用程序。每当有人浏览页面并点击刷新按钮时,nginx都会尝试在此路径上查找文件。因此,如果有人在mypage.com/about上,nginx会查找about文件,并返回404not file。如何解决此问题?

我正在考虑使用/api tho以外的通配符- mypage.com/*指定一个位置,因为此应用程序中的每个后端端点都以api开头。如何匹配除一条路径以外的所有路径?我的配置如下所示:

代码语言:javascript
运行
复制
upstream frontend {
    server frontend:3000;
}

upstream backend {
    server backend:8000;
}

server {
    listen 80;

    location /api {
        proxy_pass http://backend;
        proxy_set_header Host            \$http_host;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
    }

    location / {
        proxy_pass http://frontend;
        proxy_redirect default;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-17 04:44:03

为什么你的代理请求前台app?我假设您正在使用某种开发服务器来为前端应用程序提供服务。最好将前端应用程序构建为静态文件,并将其作为常规静态文件提供服务,除了nginx之外,不需要任何服务器。

关于你的问题,如果你打算将你的前端应用程序构建成静态文件,你可以在nginx中这样配置位置:

代码语言:javascript
运行
复制
root /var/www/your_site;
location / {
    try_files $uri /index.html;
}

其中index.html是应用程序的入口点,根路径应该配置为放置它的存储位置。

如果您仍然希望通过nginx为开发服务器的前端应用程序提供服务,您可以配置nginx来处理来自上游的错误,并将错误页面指向开发服务器的根目录。

在这种情况下,以下指令应该会对您有所帮助:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48834455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档