kubernetes nginx ingress服务器代码段注释未生效
我有以下几个问题kubernetes nginx ingress服务器代码段注释未生效,kubernetes,kubernetes-helm,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Helm,Kubernetes Ingress,Nginx Ingress,我有以下几个问题 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-configuration-snippet annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/server-snippet: | location /b
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-configuration-snippet
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/server-snippet: |
location /base/path/v1/api/update {
deny all;
return 404;
}
spec:
rules:
- http:
paths:
- path: /base/path(/|$)(.*)
backend:
serviceName: myApi
servicePort: 8080
但当我将PUT请求发送到/base/path/v1/api/update而不是404时,我得到的是500,这意味着可以从入口控制器访问该路径。有人能帮我找出原因吗
我更改为配置代码段,得到的错误是:
Error: exit status 1
2020/08/06 18:35:07 [emerg] 1734#1734: location "/base/path/v1/api/update" is outside location "^/base/path(/|$)(.*)" in /tmp/nginx-cfg008325631:2445
nginx: [emerg] location "/base/path/v1/api/update" is outside location "^/base/path(/|$)(.*)" in /tmp/nginx-cfg008325631:2445
nginx: configuration file /tmp/nginx-cfg008325631 test failed
补充我自己的答案:
对我有效的最终配置是:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-configuration-snippet
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/server-snippet: |
location ~* "^/base/path/v1/api/update" {
deny all;
return 403;
}
spec:
rules:
- http:
paths:
- path: /base/path(/|$)(.*)
backend:
serviceName: myApi
servicePort: 8080
您是否将生成的nginx.conf拉下来并确保它是在您期望的地方编写的?还有,这是一种迂腐,说每台主机一次,但你没有主机-所以,他们可能只是突然停止,希望在控制器日志中记录一些东西是的,没有操作。还有其他方法吗?一种方法是实际声明一个host:value,看看这是否会让它不那么生气,另一种方法是使用ConfigMap设置。事实上,我添加了更多描述,我尝试了配置片段,它似乎不再是一个no op。但现在却出现了错误。虽然无法理解错误,但您是否将生成的配置从控制器盒中复制出来并查看它?nginx配置是一片荒芜而神秘的土地,但如果不查看配置文件,任何人都无法猜到哪里出了问题