【问题标题】:How to extend nginx config in elastic beanstalk (Amazon Linux 2)如何在弹性 beanstalk (Amazon Linux 2) 中扩展 nginx 配置
【发布时间】:2020-08-03 14:49:15
【问题描述】:

我按照here 的建议配置了 nginx 反向代理以允许大于默认 1mb 的文件。所以,我的代码在 /.platform/nginx/conf.d/prod.conf 看起来像这样:

http {
  client_max_body_size 30M;
}

但是,这似乎没有效果,当我尝试上传大于 1mb 的文件时,nginx 仍然会报错。

我也尝试在没有http 和大括号的情况下执行此操作,如this question 接受的答案中所述,如下所示:

client_max_body_size 30M;

这也没有效果。

我认为应用配置后可能需要重新启动nginx,所以我在.ebextensions目录中添加了一个名为01nginx.config的文件,如下所示:

commands:
  01_reload_nginx: 
    command: "sudo service nginx reload"

这也没有效果。

我看过this question 和上面提到的问题,还有this one。但是,它们似乎都已过时或不适用于 Amazon Linux 2 实例,因为它们都没有提到上述弹性 beanstalk 文档中的 .platform 目录。无论如何,到目前为止,他们的答案都没有对我有用。那么,我错过了什么?

【问题讨论】:

    标签: amazon-web-services nginx amazon-elastic-beanstalk amazon-linux-2


    【解决方案1】:

    好的,经过多次尝试,我能够像这样解决这个问题:

    在 .ebextenstions 目录中添加一个名为 01_reverse_proxy.config 的文件(名称无关紧要,我认为只是 .config 部分)

    在那个文件中,准确地放置这个:

    files:
      "/etc/nginx/conf.d/proxy.conf" :
      mode: "000755"
      owner: root
      group: root
      content: |
        client_max_body_size 30M;
    commands:
      01_reload_nginx:
        command: "service nginx reload"
    

    具有适当的 YAML 间距。这解决了包括 Rails、Puma 和 Amazon Linux 2.11.4 在内的堆栈上的问题。这不是elastic beanstalk linux platforms documentation 中记录的方式。

    【讨论】:

    • 这是在旧版本的 Amazon Linux 上配置它的方法,较高投票的答案是特定于 Amazon Linux 2。
    【解决方案2】:

    我在迁移到 Amazon Linux 2 时遇到了类似的问题。

    只需在.platform/nginx/conf.d/ 创建一个名为proxy.conf 的文件,其内容如下。

    client_max_body_size 50M;
    

    如果你深入研究 nginx 的主配置,你会看到这个文件是如何包含在文件中间的,所以不需要用 http 包裹它。

    这类似于 adam tropp 的回答,但它遵循 AWS 给出的示例

    【讨论】:

    • 这和宣传的一样;但是这个文件不能包含位置块,这是我的想法
    • 对于位置块,您可以创建一个文件.platform/nginx/conf.d/elasticbeanstalk/location.conf,其中位置可以是任何名称。 elasticbeanstalk 子目录中的文件包含在适合放置位置块的位置。
    • 您好,我也遇到了同样的问题。谁能告诉我:我应该用一个值更改“.platform”还是 - 如果那是实际名称 - 我应该在 .ebextensions 文件夹中创建 .platform 文件夹吗?还是完全不同的东西?
    • 感谢您的研究,本!知道这为我节省了很多尝试获取实例上的公共 IP 以 SSH 进入并弄清楚如何添加自定义位置块的心痛。
    • 我遇到了类似的问题,并写了一篇关于操作 nginx 配置的不同方法的要点。你可以在这里找到它:gist.github.com/henhan/2943013c9064606425b0ee5bb1ca8c99
    【解决方案3】:

    以下对我有用:

    ~/my-app/
    |-- web.jar
    |-- Procfile
    |-- readme.md
    |-- .ebextensions/
    |   |-- options.config        # Option settings
    |   `-- cloudwatch.config     # Other .ebextensions sections, for example files and container commands
    `-- .platform/
        |-- nginx/                # Proxy configuration
        |   |-- nginx.conf
        |   `-- conf.d/
        |       `-- custom.conf
    

    【讨论】:

    • 检查amazon linux版本并根据它尝试。以上适用于 Amazon Linux 第 2 版 (Karoo)
    【解决方案4】:

    我这几天遇到同样的问题,最后我按照以下步骤解决了:

    1 在这个路由.platform/nginx/nginx.conf中创建一个文件

    文件 nginx.conf

    events {}
    
    http {
        server {
            listen      80;
            server_name project-jndxpewg.eu-west-2.elasticbeanstalk.com;
            client_max_body_size 64M;
    
            include /etc/nginx/fastcgi_params;
    
    
             # in my case this is the project public folder
            root /var/www/html/webroot;
            index index.php;
    
            access_log  /var/log/nginx/access.log;
            error_log   /var/log/nginx/error.log;
    
            location / {
                try_files $uri \$uri /index.php?$args;
            }
    
            location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_pass  unix:/var/run/php-fpm/www.sock;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            }
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 2015-02-23
      • 2021-11-26
      • 2021-09-30
      • 2014-12-17
      • 2020-08-19
      • 2021-05-16
      • 2020-09-22
      • 2021-01-12
      相关资源
      最近更新 更多