聚合物漂亮的URL不适用于刷新或手动导航,抛出NGINX错误



当我登陆我的应用程序时,主页可以正常工作。当我手动导航到一个漂亮的 URL 时,例如(如myapp.com/registration-page),我得到:

404 未找到 nginx/1.11.5

当我使用应用程序内的链接/按钮浏览应用程序时,它工作正常,直到我刷新漂亮的 URL 上的页面。然后,我看到相同的错误 404 未找到 nginx/1.11.5。  我目前正在使用<app-location><app-route>来处理我的路由。

当我处于开发模式时,一切都可以在所有浏览器中正常工作polymer serve.我的猜测是这是一个聚合物问题,而不是nginx问题。在Chrome中一切正常,但在Firefox或Safari中不起作用。 几个月前,我在旧版本的Polymer上遇到了类似的刷新问题。我通过将hashbang设置为 false(在routing.html文件中)来解决它:

page({
hashbang: false
});

我在index.html文件的<head>标签中添加了<base href=“/" />,它起作用了。

但是现在我已经使用了新的聚合物入门套件(polymer#^1.7.0)作为我的应用程序的基础(尽管我做了很多更改)。PSK中的项目文件的结构与旧的Polymer完全不同,旧的Polymer有一个app.js文件,PageJs用于路由。

现在没有routing.html文件,我不确定我需要更改什么。我已经尝试将<base href=“/" />添加到index.html文件中,但它不起作用。

*注意:如果它有帮助,我使用 Google Cloud Server 和 Docker 容器 + kubernetes 来部署我的 nginx。

以前有没有人遇到过这个问题并知道如何解决它?

因此,当您定义用于在集群外部公开服务的入口时,您可以指定诸如在哪个主机名上链接哪个服务之类的内容。

因此,您可以指定要映射到ing.spec.rules.hosting.spec.backend.serviceNameing.spec.backend.servicePort

因此,如果您使用其他 URL 命中入口,那么入口可能不知道将流量路由到哪里(到哪个目标服务)。

一种解决方法是,您可以在入口中添加另一个条目,该条目将漂亮的 url(在您的情况下 myapp.com)映射到同一服务。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
spec:
rules:
- host: old.com
http:
paths:
- path: /registration-page
backend:
serviceName: my-app-svc
servicePort: 80
- host: myapp.com
http:
paths:
- path: /registration-page
backend:
serviceName: my-app-svc
servicePort: 80

请注意,在上面的示例中,第二个条目的host是不同的。

入口文档:https://kubernetes.io/docs/concepts/services-networking/ingress/

为了解决这个问题,我最终只是在App Engine上启动了我的整个Polymer前端,同时将后端保留在Compute Engine上。

最新更新