roo*_*099 6 nginx-reverse-proxy kubernetes-ingress
我在 NGINX入口控制器后面的 Kubernetes 1.13 集群中托管一个 Web 应用程序。的Ingress指定path: /my-webapp/?(.*)和annotations:
{ nginx.ingress.kubernetes.io/rewrite-target: /$1 }使得所述web应用可以从在集群外部够到http://my-cluster/my-webapp。(入口控制器公开为my-cluster.)
剩下的一个问题是,webapp 包含引用例如 CGI 脚本和 CSS 样式表的“相对”URL。例如,<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,这确实是错误的,需要修复。
更新 这看起来像是一个与 NGINX 反向代理相关的问题,而不是 Kubernetes NGINX 入口控制器。我想知道建议的食谱是否以及如何在这种特殊情况下也适用。首先,我尝试切换到引用样式表的相对 URL(根据已接受答案中的配方 One),但这到目前为止还没有奏效:
,尽管它显示,但<link rel="stylesheet" type="text/css" href="my-stylesheet.css" />浏览器显然仍在尝试从 获取样式表在 URL 栏中,检查器报告的 URL 与.http://my-cluster/my-stylesheet.csshttp://my-cluster/my-webappbaseURI
现在,这种注释组合似乎可以解决问题:
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"
Run Code Online (Sandbox Code Playgroud)
我目前正在使用这个版本的入口控制器:
-------------------------------------------------------------------------------
NGINX Ingress controller
Release: 0.23.0
Build: git-be1329b22
Repository: https://github.com/kubernetes/ingress-nginx
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2266 次 |
| 最近记录: |