gpt4 book ai didi

ubuntu - Nginx client_max_body_size 在 AWS Elastic Beanstalk 上的 Docker 容器中不起作用

转载 作者:IT老高 更新时间:2023-10-28 21:22:02 25 4
gpt4 key购买 nike

我遇到了一个问题,nginx 似乎忽略(或覆盖)我在 AWS Elastic Beanstalk 上的 Ubuntu Docker 容器中升级的 client_max_body_size 指令。这会阻止用户上传大于 nginx 默认值 1MB 的文件。

我用了client_max_body_size 10M;在 http、服务器和位置 block 无济于事,我仍然在 nginx 日志中看到“客户端打算发送太大的正文”错误。我已经在 AWS EC2 Ubuntu 实例上成功使用了这些设置,但是由于在 Docker 容器中使用相同的设置,我遇到了这个问题。我也尝试使用此处概述的 ebextension Increasing client_max_body_size in Nginx conf on AWS Elastic Beanstalk

应用程序本身是在 Tomcat 容器中运行的 CFML (Railo)。

这里是相关的nginx文件:

完整的未删节文件在这里https://github.com/chapmandu/docker-railo

提前致谢。

nginx 错误日志

2014/12/02 03:02:05 [error] 32116#0: *142 client intended to send too large body: 1290803 bytes, client: 172.31.19.39, server: , request: "POST /listings/35602/images/create HTTP/1.1", host: "staging.svr.com.au", referrer: "http://staging.svr.com.au/listings/35602/images/new"

nginx.conf

daemon off;

worker_processes 1;

events {
worker_connections 1024;
}

http {
client_max_body_size 10M;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/sites-enabled/default;
}

默认

server
{
listen 80;
server_name localhost;

client_max_body_size 10M;

# don't rewrite for static files
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm|map|ttf|woff)$
{
root /var/www;
}

location /
{
root /var/www;
index index.cfm;
client_max_body_size 10M;
include proxy_params;
}
}

proxy_params

proxy_redirect off;

# # If you want your server to identify itself only as Tomcat you can pass
# # the Tomcat setting to Nginx telling Nginx not to change it
#proxy_pass_header Server;

# Point Nginx to Tomcat
proxy_pass http://localhost:8080;

# Send appropriate headers through
# Forward the real ip to Tomcat (and Railo)

proxy_buffers 16 16k;
proxy_buffer_size 32k;

# prevent regular 504 Gateway Time-out message
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

# pass headers through
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Query-String $request_uri;
proxy_set_header X-Host $host;
proxy_set_header X-Remote-Addr $remote_addr;
proxy_set_header X-Request-Filename $request_filename;
proxy_set_header X-Request-URI $request_uri;
proxy_set_header X-Server-Name $server_name;
proxy_set_header X-Server-Port $server_port;
proxy_set_header X-Server-Protocol $server_protocol;

proxy_intercept_errors on;

# apparently this is how to disable cache?
expires -1;

最佳答案

事实证明,AWS 使用 nginx 代理与 docker 容器的连接,因此必须更新 AWS nginx 配置才能设置 client_max_body_size。请注意,我使用的是运行 Docker 1.2.0 的 64 位 Amazon Linux 2014.09 v1.0.9。

我需要使用以下内容创建 .ebextensions/01-client-max-body.config。

重要的一行是“server 127.0.0.1:EB_CONFIG_NGINX_UPSTREAM_PORT;”

files:
"/tmp/custom-nginx.conf":
mode: "00644"
owner: "root"
group: "root"
content: |
upstream docker {
server 127.0.0.1:EB_CONFIG_NGINX_UPSTREAM_PORT;
keepalive 256;
}

server {
listen EB_CONFIG_HTTP_PORT;
client_max_body_size 10M;

location / {
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

container_commands:
01_remove_orig_config:
command: 'sed -i ''/EOF/,/EOF/d'' /opt/elasticbeanstalk/hooks/appdeploy/enact/00flip.sh '
02_add_new_conf:
command: 'sed -i ''/# set up nginx/a sed -i s\/EB_CONFIG_NGINX_UPSTREAM_PORT\/$EB_CONFIG_NGINX_UPSTREAM_PORT\/ \/tmp\/custom-nginx.conf \nsed -i s\/EB_CONFIG_HTTP_PORT\/$EB_CONFIG_HTTP_PORT\/ \/tmp\/custom-nginx.conf \ncat \/tmp\/custom-nginx.conf > \/etc\/nginx\/sites-available\/elasticbeanstalk-nginx-docker.conf'' /opt/elasticbeanstalk/hooks/appdeploy/enact/00flip.sh'
test: 'test ! $(grep custom-nginx.conf /opt/elasticbeanstalk/hooks/appdeploy/enact/00flip.sh)'

由 super 有用的 AWS 支持提供的答案..

关于ubuntu - Nginx client_max_body_size 在 AWS Elastic Beanstalk 上的 Docker 容器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27247026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com