aws 弹性豆茎“请求 URI 太长”

Posted

技术标签:

【中文标题】aws 弹性豆茎“请求 URI 太长”【英文标题】:aws elastic beanstalk "Request-URI Too Long" 【发布时间】:2015-07-28 23:03:55 【问题描述】:

我有一个在弹性豆茎上运行 python 烧瓶应用程序的设置。我的问题是我收到了这个 414 错误代码。我已将LimitRequestLine 200000 添加到httpd.conf,并在ec2 实例的shell 上使用sudo httpd service restart 重新启动,但它似乎无法解决问题..

这对于运行在 ec2 而不是弹性 beanstalk 上的 apache 服务器非常有效。也许是负载均衡器的错?

非常感谢您对此的任何帮助...

另一件奇怪的事情 - 如果我从 ec2 实例上的 shell 重新启动 httpd 服务,长 uri 可以通过一次,并且只能通过一次 - 第二次我再次获得 414..

谢谢

【问题讨论】:

如果你需要发送这么多数据,你真的应该使用 POST。你不能有什么理由吗? @datasage eb 中的 POST 也存在同样的问题 【参考方案1】:

另一种方式可以是直接修改负载均衡器,增加参数“large_client_header_buffers”。这可能需要应用程序负载均衡器(与默认的经典负载均衡器相比)。

例如在文件夹 .ebextensions 中创建文件 files.config

files:
  "/etc/nginx/conf.d/proxy.conf":
    mode: "000755"
    owner: root
    group: root
    content: |
     large_client_header_buffers 16 1M;

【讨论】:

【参考方案2】:

LimitRequestLine 应位于 <VirtualHost> 部分中。在 Elastic Beanstalk 中执行此操作非常棘手,因为您需要将此行添加到 /etc/httpd/conf.d/wsgi.conf,这是在运行 commandscontainer_commands 之后自动生成的。根据this博客的想法,将以下内容添加到.ebextensions下的配置文件中:

commands:
  create_post_dir:
    command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_adjust_request_limit.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      sed -i.back '/<VirtualHost/aLimitRequestLine 100000' /etc/httpd/conf.d/wsgi.conf
      supervisorctl -c /opt/python/etc/supervisord.conf restart httpd

【讨论】:

以上是关于aws 弹性豆茎“请求 URI 太长”的主要内容,如果未能解决你的问题,请参考以下文章

AWS 弹性豆茎。用户上传的文件保存在哪里?

在亚马逊 AWS 弹性豆茎(或本地?)上安装解析仪表板

不能 git aws.push 到带有 ruby​​ 存储库的弹性豆茎

AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令

芹菜工人在 aws 弹性豆茎中失败 [退出:芹菜工人(退出状态 1;未预期)]

在弹性豆茎中设置静态文件