You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Kubernetes Nginx ingress controller禁用服务的HTTP访问

配置方案

以下配置基于Nginx Ingress Controller(K8s环境最常用的Ingress实现),通过单Ingress专属注解覆盖全局规则,既满足当前API服务的HTTP直接返回错误的要求,也不会影响集群内其他服务默认的HTTP转HTTPS 308重定向逻辑。

完整ingress.yaml示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-service-ingress
  annotations:
    # 关闭当前Ingress默认的HTTP自动重定向HTTPS逻辑,不影响其他服务
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    # 自定义规则:HTTP请求直接返回错误,不重定向
    nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($scheme = http) {
        return 426 "Please use HTTPS protocol to access this API service";
      }
spec:
  tls:
  - hosts:
    - your-api-domain.com
    secretName: your-tls-secret
  rules:
  - host: your-api-domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: your-api-service
            port:
              number: 80

配置说明

  • 状态码可根据业务需要调整:如果不想用426(Upgrade Required),也可以换成403(Forbidden)、400(Bad Request)等自定义错误码,直接修改return后面的状态码和提示内容即可
  • 全局默认的308重定向规则是集群层面的Ingress Controller启动参数配置,上述仅针对当前服务的Ingress做了规则覆盖,不会修改全局配置,其他服务不受任何影响

验证方式

配置生效后执行测试:

  • 访问HTTP协议的API地址:curl -i http://your-api-domain.com,应直接返回你设置的错误码,不会出现308重定向响应
  • 访问HTTPS协议的API地址:curl -i https://your-api-domain.com,业务响应正常
  • 访问集群内其他服务的HTTP地址:curl -i http://other-service-domain.com,依然返回308重定向到HTTPS,符合预期

内容的提问来源于stack exchange,提问作者David Tinker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:48:03