【问题标题】:angular routes not directly accessible in nginx在 nginx 中无法直接访问的角度路由
【发布时间】:2018-07-11 15:48:35
【问题描述】:

这是交易:我设置了最简单的 nginx 配置来练习 angular,并将 routeProvider 配置为使用 html5mode。到目前为止,一切都很好!我将基数设置为“/”,指向 /view1 和 /view2 的链接可以正常工作,但只有当我在索引页面中单击这些链接时。当我尝试直接在浏览器中访问它们(或重新加载页面)时,nginx 会返回 403 禁止。这是一个简单的配置,但我找不到关于它的简单解释:(

我想以一种方式进行设置,使任何路由都可以正常工作,而不必在我的 nginx site.conf 中明确设置(一个接一个)。顺便说一句,权限很好!

这是实际的 conf 文件:

server {
    listen  *:80;
    server_name rbs.ang;
    root    /_dev/angularjs/app;
    index   index.html;
    charset UTF-8;

    location / {
        expires -1;
        add_header  Pragma "no-cache";
        add_header  Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
        try_files   $uri $uri/ index.html;
   }
}

【问题讨论】:

  • 您可能需要配置您的服务器以将 / 之后的任何请求重定向到 index.html
  • 正如@Wawy 所说,只需向 nginx 添加一条规则,即当向/* 发出任何请求时,nginx 必须服务 index.html。 AngularJS 会处理剩下的事情
  • 我刚刚添加了一条规则,但没有运气,也许我做错了什么,你能帮我解决这条规则吗?
  • 试试try_files $uri /$uri /index.html 注意index.html前面的正斜杠
  • 这条线在两条规则中都有效,非常感谢!

标签: angularjs nginx


【解决方案1】:

您需要在您的服务器上配置一个备用路由,以便在路由不匹配时提供 index.html 文件。 这有效:

location / {
    try_files $uri $uri/ /index.html?$query_string;
}

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 2018-02-09
    • 2019-04-03
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多