Kubernetes同Pod部署Nginx+WordPress FPM访问EFS图片返回404
根因定位
- 核心问题来自部署配置的挂载缺失:你当前的Deployment中,
nginx容器没有将EFS对应的PVC挂载到/shared路径。你在app容器中创建的wp-content/uploads软链接指向的是/shared下的EFS目录,但是Nginx容器内不存在/shared这个挂载点,自然无法解析软链接指向的实际文件,访问图片就会返回404。 - 符号链接跟随配置不是当前问题的核心:Nginx默认是允许跟随符号链接的,你当前的配置中没有禁用该规则的指令,因此无需优先排查该配置。
修复步骤
1. 调整Deployment的Nginx容器挂载配置
给Nginx容器增加和app容器完全一致的EFS挂载配置,修改后的Nginx容器配置如下:
- image: nginx name: nginx ports: - containerPort: 80 protocol: TCP volumeMounts: - mountPath: /var/www/html name: shared-files - mountPath: /etc/nginx/conf.d/default.conf name: nginx-config subPath: nginx.conf # 新增EFS挂载配置,和app容器的挂载路径保持一致 - mountPath: /shared name: efs-pvc
2. (可选)显式配置Nginx允许跟随符号链接
如果调整挂载后仍有异常,可以在Nginx的server配置块中显式开启符号链接跟随:
server { listen 80; server_name some server; root /var/www/html/; index index.php index.html index.htm; # 显式允许跟随符号链接 disable_symlinks off; # 其余原有配置保持不变 access_log /var/log/nginx/webapp-access.log; error_log /var/log/nginx/webapp-error.log; # ... 剩下的原有配置 }
验证方法
重新应用修改后的部署资源后,进入Nginx容器执行ls /var/www/html/wp-content/uploads,确认可以正常列出目录内的文件,再访问图片资源验证返回正常即可。
内容的提问来源于stack exchange,提问作者rholdberh
相关产品推荐
相关产品推荐

