【发布时间】:2019-11-06 23:09:23
【问题描述】:
我已经用我的微服务设置了 Nginx 入口控制器;该微服务使用 Hateoas 生成链接;我有以下 Ingress 集。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "server: imemywork";
nginx.org/ssl-services: "mic-ser-service"
nginx.org/client-max-body-size: "1024m"
nginx.ingress.kubernetes.io/server-snippet: |
location /service(|/)(.*) {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host/service;
proxy_set_header X-Forwarded-Port $server_port;
}
name: mic-ser-ingress
spec:
tls:
- hosts:
- imemywork.com
secretName: mic-ser-tls-certificate
rules:
- host: api.imemywork.com
http:
paths:
- path: /service(|/)(.*)
backend:
serviceName: mic-ser-service
servicePort: 8080
没有在请求中设置 X-Forwarded-* 标头;由于这些没有设置,HATEOAS 链接是使用 http 和浏览器发送的主机生成链接;我是否将它们设置在错误的位置?我还尝试将位置块移动到 configuration-sn-p 下,但没有成功;还有什么,我需要在 Nginx Ingress 控制器中设置/启用吗?
Bts,在 configuration-sn-p 下有 more_set_header 只会将 headers 添加到响应中,而不是添加到服务器的请求中。
【问题讨论】:
-
您是否尝试过 configuration-sn-p 而不是 server-sn-p? kubernetes.github.io/ingress-nginx/user-guide/… 检查注释的内容是否存在于 nginx.conf 文件中,使用:'kubectl exec nginx-ingress-controller-873061567-4n3k2 -n kube-system cat /etc/nginx/nginx.conf'
-
@Tech Junkie,您还有问题吗?您尝试过 Matthias 的建议吗?
-
我试过了,发现 nginx.conf 没有更新。
-
您是否尝试过使用
sudo nginx -s reload重新加载配置文件?你还在使用任何 ConfigMap 吗?
标签: nginx kubernetes-ingress nginx-ingress