我在Ruby 2.0 / Puma实例上运行rails应用程序,并尝试自定义nginx配置。我需要增加允许的请求大小以允许文件上传。我发现了其他一些帖子让我将其添加到我的.ebextensions中:
files:
"/etc/nginx/conf.d/proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 70M;
这确实按预期创建了文件,但在我手动重启nginx之前它似乎无法工作。因此,我试图找到一种方法,用.ebextensions命令重新启动nginx,但没有取得任何成功。有没有人知道用.ebextensions重新启动nginx的方法,或者知道更好的方法来解决这个问题?
答案 0 :(得分:12)
我找到了一种在部署后使用未记录的技术运行部署后脚本后重启nginx的方法。我把它添加到我的.ebextensions:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
service nginx restart
答案 1 :(得分:4)
要重新加载nginx配置,您可以使用container_commands
来自http://www.infoq.com/news/2012/11/elastic-beanstalk-config-files:
container_commands键允许您为容器执行命令。它们在应用程序和Web服务器已设置并且应用程序已解压缩但在部署应用程序之前运行。 container_commands按名称按字典顺序处理。
container_commands:
01_reload_nginx:
command: "service nginx reload"
答案 2 :(得分:3)
我的回复可能有点晚了,但我发现了另一种不那么干扰的方法来在Elastic Beanstalk上配置nginx。
您可以通过创建mat
目录直接为nginx指定配置文件。在EB部署期间,内部找到的任何配置文件都会自动复制到.ebextensions/nginx/conf.d
目录。
这似乎是一个更强大的解决方案。
此处提供的文档: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html
编辑:正如评论中所指出的,Elastic Beanstalk在平台之间存在不一致的实现。此处的文档适用于Java SE,看来此文档与所有平台无关。
答案 3 :(得分:1)
这是我的配置并为我工作。你必须将它包含在http块中。
files:
"/etc/nginx/conf.d/proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
http {
client_max_body_size 20M;
}
答案 4 :(得分:1)
以下对我有用(我将 HTTP 有效负载增加到 100M - 如果您想增加到其他大小,请进行调整):
files:
"/etc/nginx/conf.d/proxy.conf":
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 100M;
"/opt/elasticbeanstalk/hooks/appdeploy/post/03_restart_nginx.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
service nginx restart
答案 5 :(得分:0)
我让它像这样工作。在应用程序部署之前,无需重新启动或重新加载nginx,因为commands
(而不是container_commands
)符文。
commands:
01-get-nginx-conf-file:
command: "aws s3 cp s3://somepath/nginx.conf /home/ec2-user"
02-replace-default-nginx-config:
command: "cp /home/ec2-user/nginx.conf /etc/nginx/nginx.conf"
答案 6 :(得分:0)
我在将Docker部署到Elastic Beanstalk中时遇到了类似的情况。我可以通过以下单个配置文件解决更改以及nginx重载:<app>/.ebextensions/increase_upload_size.config
,包括以下代码:
container_commands:
01_reload_nginx:
command: "sudo service nginx reload"
files:
"/etc/nginx/conf.d/proxy.conf" :
mode: "000644"
owner: root
group: root
content: |
client_max_body_size 20M;
当我在EB中执行“上传和部署”时,便实现了更改。