我正在NGINX ingress controller后的Kubernetes 1.13集群中托管一个Web应用程序。 Ingress
指定path: /my-webapp/?(.*)
和annotations:{ nginx.ingress.kubernetes.io/rewrite-target: /$1 }
,以便可以从群集外部的http://my-cluster/my-webapp
处访问Web应用程序。 (入口 Controller 公开为my-cluster
。)
剩下的一个问题是,Web应用程序包含引用了例如CGI脚本和CSS样式表。例如,<link rel="stylesheet" type="text/css" href="/my-stylesheet.css" />
中的样式表当前未加载。我认为这是因为浏览器以错误的URL请求(正确的http://my-cluster/my-webapp/my-stylesheet.css
),并且需要更多注释。
这种情况下正确的配置是什么?
UPDATE 检查器发现浏览器当前从URL http://my-cluster/my-stylesheet.css
请求样式表,这确实是错误的,需要修复。
更新 This看起来通常与NGINX反向代理有关,而不是与Kubernetes NGINX入口 Controller 有关。我想知道在这种情况下建议的食谱是否也可以如何使用。首先,我尝试切换到相对URL来引用样式表(已接受答案中的每个配方1),但是到目前为止,该方法也没有起作用:<link rel="stylesheet" type="text/css" href="my-stylesheet.css" />
,浏览器显然仍尝试从http://my-cluster/my-stylesheet.css
获取样式表,尽管它在URL栏中显示http://my-cluster/my-webapp
,并且检查器报告的URL与baseURI
相同。
最佳答案
现在this批注组合似乎可以解决问题:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Accept-Encoding "";
sub_filter '<head>' '<head> <base href="/my-webapp/">';
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
我目前正在使用入口 Controller 的version:
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: 0.23.0
Build: git-be1329b22
Repository: https://github.com/kubernetes/ingress-nginx
-------------------------------------------------------------------------------
关于kubernetes-ingress - 在Kubernetes NGINX入口 Controller 后面托管具有相对URL的Webapp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55394823/