华为云 ECS 配置 OpenResty 反向代理踩坑记录

举报
yd_233758914 发表于 2026/11/07 19:37:19 2026/11/07
【摘要】 华为云 ECS 配置 OpenResty 反向代理踩坑记录前言最近在华为云 ECS 上搭建接口服务,使用 OpenResty 做反向代理,调试的时候遇到不少问题,在这里把整个排查过程和解决方案记录下来,方便后续自己复盘,也给遇到同类问题的朋友参考。环境说明服务器:华为云弹性云服务器 ECS 系统:CentOS 7 服务:OpenResty + PHP 后端接口 需求:域名反向代理转发到后端 ...

华为云 ECS 配置 OpenResty 反向代理踩坑记录

前言

最近在华为云 ECS 上搭建接口服务,使用 OpenResty 做反向代理,调试的时候遇到不少问题,在这里把整个排查过程和解决方案记录下来,方便后续自己复盘,也给遇到同类问题的朋友参考。

环境说明

服务器:华为云弹性云服务器 ECS 系统:CentOS 7 服务:OpenResty + PHP 后端接口 需求:域名反向代理转发到后端 API,同时处理跨域、请求方法限制

问题现象

接口 POST 请求访问直接返回 405 Not Allowed,页面返回 OpenResty 默认报错页,GET 请求却可以正常访问。一开始以为是后端代码没有配置路由,反复核对接口路由文件,发现后端接口本身是支持 POST 请求的。

排查步骤

  1. 先在服务器内部 curl 直接访问后端服务地址,POST 请求正常返回数据,确认后端程序本身没问题,问题锁定在 OpenResty 的配置。
  2. 查看 Nginx 站点配置,发现伪静态规则里,把 POST、PUT 这类请求强制当成静态文件处理,静态资源目录不允许 POST 访问,直接抛出 405。
  3. 测试方案:第一种是修改 Nginx 配置,添加判断,如果是接口路由,不执行静态文件匹配;第二种是单独给 API 路径写 location,转发请求到后端 php-fpm。

最终可用配置片段

location /api/ {
    proxy_pass http://127.0.0.1:9000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

配置完成后重载 openresty:openresty -s reload,再次 POST 请求,接口正常返回数据。

额外踩坑补充

域名解析停放页问题:域名解析 IP 已经指向 ECS 公网 IP,访问却跳转到域名出售停放页。原因是域名解析生效延迟,或者域名服务商的拦截,临时可以先用 ECS 公网 IP 加端口测试接口,等解析稳定后再切域名。

总结

405 错误不一定是后端没写接口,很多时候是 Nginx/OpenResty 的 location 规则拦截了请求,优先内网直接访问后端验证,再去调整代理配置,能节省大量排查时间。

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。