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

Kubernetes中Nginx Ingress未正确生成FastCGI配置问题排查

问题根因与解决方案

你的Ingress配置缺少Nginx Ingress Controller识别FastCGI服务的关键注解,导致Controller默认将后端服务当作HTTP服务处理,生成了proxy_pass配置而非fastcgi_pass。用HTTP协议去连接FastCGI端口(9000)必然会出现协议不匹配,引发连接重置和502错误。

修正后的Ingress配置示例

你需要添加FastCGI相关注解,告诉Ingress Controller用FastCGI协议转发请求:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: php-fpm-ingress
  annotations:
    # 核心注解:指定后端为FCGI协议
    nginx.ingress.kubernetes.io/backend-protocol: "FCGI"
    # 指定PHP默认入口文件
    nginx.ingress.kubernetes.io/fastcgi-index: "index.php"
    # 必须配置:用ConfigMap传递FastCGI必要参数,否则PHP-FPM无法正确处理请求
    nginx.ingress.kubernetes.io/fastcgi-params-configmap: "php-fpm-fastcgi-params"
spec:
  ingressClassName: nginx
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: php-fpm-service
            port:
              number: 9000

必要的FastCGI参数ConfigMap

PHP-FPM需要SCRIPT_FILENAME等参数才能正确解析请求,创建如下ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
  name: php-fpm-fastcgi-params
data:
  SCRIPT_FILENAME: "$document_root$fastcgi_script_name"
  QUERY_STRING: "$query_string"
  REQUEST_METHOD: "$request_method"
  CONTENT_TYPE: "$content_type"
  CONTENT_LENGTH: "$content_length"

验证逻辑

添加注解后,Nginx Ingress Controller会自动生成包含fastcgi_pass的配置,同时注入你定义的FastCGI参数,此时请求会以正确的FastCGI协议转发到PHP-FPM容器,解决502和连接重置问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:33:20