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
,这是在运行 commands
和 container_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 太长”的主要内容,如果未能解决你的问题,请参考以下文章
不能 git aws.push 到带有 ruby 存储库的弹性豆茎
AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令