Tek*_*ath 4 nginx kubernetes kubernetes-ingress nginx-ingress
我有许多指向入口控制器 IP 的域。我想阻止所有域/站点的/特定路径。有没有办法做到这一点。我可以用于nginx.ingress.kubernetes.io/configuration-snippet: | 每个网站。但正在寻找同时处理所有站点/域/入口资源的方法。
使用的控制器: https: //kubernetes.github.io/ingress-nginx/
有两种方法可以实现此目的:
\n1. 第一个是使用server-snippet注释:
\n\n使用注释
\nnginx.ingress.kubernetes.io/server-snippet可以在服务器配置块中添加自定义配置。
这是我的入口对象清单:
\napiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n name: minimal-ingress\n annotations:\n nginx.ingress.kubernetes.io/server-snippet: |\n location ~* /admin-access {\n deny all;\n return 403;\n }\nspec:\n rules:\n - host: domain.com\n http:\n paths:\n - path: /\n backend:\n serviceName: web \n servicePort: 80\nRun Code Online (Sandbox Code Playgroud)\n请注意,使用 此方法:
\n\n\n每个主机只能使用此注释一次。
\n
2. 第二个是使用ConfigMaps和Server-snippet:
\n您要做的就是找到您的configMap:
kubectl get pod <nginx-ingress-controller> -o yaml\nRun Code Online (Sandbox Code Playgroud)\n这是容器的位置args:
kubectl get pod <nginx-ingress-controller> -o yaml\nRun Code Online (Sandbox Code Playgroud)\n然后编辑它并添加该server-snippet部分:
spec:\n containers:\n - args:\n - /nginx-ingress-controller\n - configmap=$(POD_NAMESPACE)/nginx-loadbalancer-conf\nRun Code Online (Sandbox Code Playgroud)\n此方法允许您为 Ingress 资源中定义的所有主机全局定义受限位置。
\nserver-snippet请注意,您阻止的路径的使用不能在入口资源对象中定义。location-snippet然而, via还有另一种方法ConfigMap:
apiVersion: v1 \n data: \n server-snippet: |\n location /admin-access {\n deny all;\n }\nRun Code Online (Sandbox Code Playgroud)\n这样,对于入口对象中的每个现有路径,都会有入口规则,但对于特定的 uri,它将被阻止(在上面的示例中,当admin出现在 之后时,它将被阻止web)。所有其他 uri 都将被传递。
3. 这是一个测试:
\nlocation ~* "^/web/admin { \n deny all; \n }\nRun Code Online (Sandbox Code Playgroud)\n这是一个已被拒绝的路径的测试:
\n\xe2\x9e\x9c curl -H "Host: domain.com" 172.17.0.4/test \n...\n "path": "/test",\n "headers": {\n...\n },\n "method": "GET",\n "body": "",\n "fresh": false,\n "hostname": "domain.com",\n "ip": "172.17.0.1",\n "ips": [\n "172.17.0.1"\n ],\n "protocol": "http",\n "query": {},\n "subdomains": [],\n "xhr": false,\n "os": {\n "hostname": "web-6b686fdc7d-4pxt9"\n... \nRun Code Online (Sandbox Code Playgroud)\n其他信息:1.16 中删除了已弃用的 API。这里\xe2\x80\x99是你需要知道的:
\n\n\nv1.22 版本将停止提供以下已弃用的 API\n版本,转而使用更新且更稳定的 API 版本:
\n将不再提供 Extensions/v1beta1 API 版本中的入口\n
\n
| 归档时间: |
|
| 查看次数: |
7630 次 |
| 最近记录: |