我正在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/

10-15 23:21