当我登陆我的应用程序时,主页正常工作。当我手动导航到像(myapp.com/registration-page
)这样的漂亮网址时,我得到:
404 Not Found nginx / 1.11.5
当我使用应用程序中的链接/按钮浏览应用程序时,它可以正常运行,直到我在一个漂亮的URL上刷新页面。然后,我看到同样的错误404 Not Found nginx/1.11.5。

我目前正在使用<app-location>
和<app-route>
来处理我的路由。
当我使用polymer serve
处于开发模式时,所有浏览器都能正常运行。我的GUESS是它是聚合物问题,而不是nginx问题。在Chrome中一切正常,但在Firefox或Safari中无效。几个月前,我对旧版本的Polymer也有类似的令人耳目一新的问题。我通过将hashbang
设置为false(在routing.html
文件中)来解决它:
page({
hashbang: false
});
我在<base href=“/" />
文件的<head>
标记中添加了index.html
,并且有效。
但是现在我已经使用了新的Polymer Starter Kit(聚合物#^ 1.7.0)作为我的应用程序的基础(虽然我做了很多改动)。 PSK中的项目文件的结构与旧的Polymer完全不同,后者存在app.js
文件,而PageJs用于路由。
现在没有routing.html
文件,我不确定我需要更改什么。我已经尝试将<base href=“/" />
添加到index.html
文件中,但它无效。
*注意:如果有助于我使用Google Cloud Server和Docker容器+ kubernetes来部署我的nginx。
之前是否有人遇到此问题并知道如何解决?
答案 0 :(得分:0)
因此,当您定义用于在集群外部公开服务的入口时,您可以指定诸如服务在哪个主机名上链接的内容。
因此,您指定ing.spec.backend.serviceName
和ing.spec.backend.servicePort
映射到ing.spec.rules.host
。
因此,如果您使用其他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
是不同的。
Ingress docs:https://kubernetes.io/docs/concepts/services-networking/ingress/
答案 1 :(得分:0)
为了解决这个问题,我最终只是在App Engine上启动了我的整个Polymer前端,同时将我的后端保留在Compute Engine上。