nginx-ingress 丢失 header 问题-NGINX反向代理,header丢失的问题

申请的申请头参数有下划线,而Nginx代理默认会把header中参数有“_”下划线的参数去掉;解决这个问题只须要在Nginx的配置文件中增加:underscores_in_headers on;重启Nginx即可。在下面的这个问题中,就是因为Cookies的参数里有两个参数是带有下划线的,因而每次申请Nginx都会把这两个参数当作有效参数去掉,导致每次申请都须要认证,因而就会报下面的谬误第一条。

默认情况下,并不是所有headers的fields它都会转发,fields里带有下划线(_)的,Nginx视为不合法,自动抛弃不发了。例如:AUTHORIZATION_TOKEN

1.解决方法:
想要支持下划线(_)的headers fields,就需要将underscores_in_headers设置为on;默认是off

NGINX配置添加全局部分,并重启:

http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    underscores_in_headers on;
    #keepalive_timeout  0;
    keepalive_timeout  65;

ingress 配置

nameOverride: gaea-flow-internal-test.gemdaletech.com-ingress

annotations:
  nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/8,127.0.0.0/8,172.16.0.0/12,192.168.0.0/16
  nginx.ingress.kubernetes.io/server-snippet: |
    underscores_in_headers on;
hosts:
  - url: gaea-flow-internal-test.gemdaletech.com
    protocol: http
    paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: gaea-flow
            port:
              number: 80
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里是一个简单的示例配置,将 nginx-ingress 代理到 httpd 服务。 首先,你需要在 Kubernetes 集群中安装 nginx-ingress 控制器。然后,你需要创建一个 Kubernetes 服务和一个 Deployment 来运行 httpd。 下面是一个示例 Deployment 文件,名为 `httpd.yaml`: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: httpd spec: replicas: 1 selector: matchLabels: app: httpd template: metadata: labels: app: httpd spec: containers: - name: httpd image: httpd:latest ports: - containerPort: 80 ``` 然后创建这个 Deployment: ``` kubectl apply -f httpd.yaml ``` 接下来,你需要创建一个 Kubernetes 服务来将流量路由到 httpd。 下面是一个示例 Service 文件,名为 `httpd-service.yaml`: ```yaml apiVersion: v1 kind: Service metadata: name: httpd-service spec: selector: app: httpd ports: - name: http port: 80 targetPort: 80 ``` 然后创建这个 Service: ``` kubectl apply -f httpd-service.yaml ``` 最后,你需要创建一个 Ingress 对象来将流量路由到 httpd 服务。 下面是一个示例 Ingress 文件,名为 `httpd-ingress.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: httpd-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: example.com http: paths: - path: /httpd pathType: Prefix backend: service: name: httpd-service port: name: http ``` 在这个示例中,我们将流量路由到 `example.com/httpd`。 然后创建这个 Ingress: ``` kubectl apply -f httpd-ingress.yaml ``` 这样就完成了 nginx-ingress 代理 httpd 服务的示例配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值