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

Elastic Beanstalk部署的Nginx Rewrite规则未触发,求问题排查

问题分析与修正方案

你的配置存在两个关键问题,导致rewrite规则未触发:

1. URI变量选择错误

Nginx的$uri变量是解码后的请求路径,当用户请求包含%23的URL时,$uri里的%23已经被自动解析为#,所以你的正则^([^#]*)%23(.*)$根本匹配不到任何内容。

需要改用$request_uri变量,它保存的是原始未解码的请求URI(包含%23这类编码字符)。

2. 重复的location /块冲突

Elastic Beanstalk的默认Nginx配置中已经定义了location /块,你在conf.d目录下新增另一个location /会导致Nginx配置冲突——同一个server块内不能存在多个匹配优先级相同的location /,Nginx会优先使用主配置中的location /,完全忽略你的规则。


修正后的配置文件

将.ebextensions/nginx/conf.d/rewrite.config的内容替换为:

files:
  "/etc/nginx/conf.d/rewrite.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      # 在server级别添加rewrite规则,避免与已有location块冲突
      if ($request_uri ~* "^([^#]*)%23(.*)$") {
          set $new_uri $1#$2;
          rewrite ^ $new_uri permanent;
      }

额外注意事项

  • 配置文件权限:000644足以满足Nginx读取需求,原配置的000755属于多余的执行权限。
  • 验证规则:部署后可以查看Nginx错误日志/var/log/nginx/error.log,确认规则是否触发;也可以通过curl -I "http://your-domain/path%23test"测试301跳转是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:22:41