【问题标题】:How to enable gzip for nginx within a Dokku instance?如何在 Dokku 实例中为 nginx 启用 gzip?
【发布时间】:2019-08-09 08:00:55
【问题描述】:

我在DigitalOcean droplet 上使用Dokku (版本0.11.6) 部署了一个node.js 应用程序。我需要在 nginx 中启用 gzip,但我发现文档令人困惑。它指出:

Dokku 使用名为sigil 的模板库为每个应用程序生成 nginx >配置。您还可以为>您的应用程序提供自定义模板,如下所示:

将以下示例模板复制到一个名为 nginx.conf.sigil 的文件中,并且 >要么:

  • 如果使用 buildpack 应用程序,您必须将其检入应用程序存储库的根目录中。
  • ADD 到你的 dockerfile WORKDIR
  • 如果你的 dockerfile 没有WORKDIRADD 则放到/app 文件夹中

我正在使用具有默认设置的 Dokku (原样),并且从未添加过 buildpack 或 dockerfile,因此这些说明对我来说没有多大意义。我想知道的是:

  • 是否可以创建一个部分 Nginx 配置文件,我可以将其包含在每次部署应用程序时应用的源存储库的根目录中?

  • 如果没有,我该如何修改 nginx 配置以确保它在部署之间保持不变?

  • 如果必须在外部完成配置,您将如何在项目中包含一些对它的引用以供将来参考?

任何提示将不胜感激!

【问题讨论】:

    标签: node.js nginx dokku


    【解决方案1】:

    感谢Peter Nikolow(通过 Twitter)和Alex Ellis(通过 Zoom 呼叫),解决方案是修改整个服务器的主 nginx 配置文件,因为它无需为每个站点启用 gzip。

    步骤如下:

    1. 以 root 身份进入你的 droplet
    2. 运行 nano /etc/nginx/nginx.conf 编辑根 nginx 配置文件
    3. http 块内,添加以下内容:
    gzip on;
    gzip_min_length 1000;
    gzip_buffers 4 32k;
    gzip_proxied any;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
    1. 通过在它们前面放置 # 来注释掉其他 gzip 配置
    2. cmd+x 退出编辑,然后按Y 保存更改
    3. 运行nginx -t -c /etc/nginx/nginx.conf 测试新配置
    4. 运行sudo systemctl daemon-reload
    5. sudo systemctl restart nginx重启nginx

    【讨论】:

    • Dokku v0.3.22 开始,gzip 在包含的服务器级 nginx.conf 中为 enabled by default。从那时起,对 nginx 的支持发生了一些变化,但 gzip 应该已经包含在内了。例如,以下是v0.11.6 的设置。
    • 我现在在新的 Digital Ocean 液滴上运行 dokku version 0.18.3,但仍然遇到这个问题。
    • 如果你能加入我们的 Slack 讨论这个问题,我们可以准确地弄清楚你想要做什么以及为什么它不能开箱即用。
    猜你喜欢
    • 2017-02-08
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多