【问题标题】:How do I modify nginx.conf when utilizing Docker?使用 Docker 时如何修改 nginx.conf?
【发布时间】:2023-04-02 02:25:02
【问题描述】:

我继承了一个Microsoft Visual Studio MVC 项目进行修改,我现在需要允许用户将文件上传到Web 服务器。我将MS Visual Studio 中的Windows 11IIS Express 用于开发目的,IIS. 没有问题。但是,该应用程序在Ubuntu-based 服务器上运行,作为Web 服务器运行NGINX

问题:当我尝试将大于 1MB 的文件从浏览器上传到生产服务器时,我收到错误消息“413 Request Entity Too Large”。在网上搜索后我发现:(a)NGINX 默认调用 1MB 限制; (b) 有必要通过添加NGINX "client-max-body-size" 指令来修改nginx.conf 文件。

我在生产服务器上找到了nginx.conf 文件,并使用Nano. 浏览了它。但是,由于Docker. 的存在,我没有尝试修改和保存文件,诚然,我几乎知道Docker 什么都没有,不幸的是,设置此服务器的负责人早已离开公司。此外,鉴于我认为有必要涉及Docker.,我不清楚是否简单地修改nginx.conf 文件并在生产服务器上重新启动NGINX 会起到作用

顺便说一句,我的客户使用Azure DevOps 来促进协作。我定期使用MS Visual Studio 中的Git 对我的项目进行更改,然后使用Ubuntu update_app.sh 脚本将更改推送到生产中。我之前曾尝试修改我的 MVC 项目的本地副本中包含的 nginx.conf 文件。该文件已通过Azure DevOps 推送到生产服务器,但修改后的nginx.conf 文件不会推送到生产服务器,可能是由于Docker. 的存在

如果有人向我解释DockerNGINX. 之间的交互,我将不胜感激。我将进一步感谢有关如何将修改后的nginx.conf 文件推送到生产环境的任何提示。

提前感谢您的帮助。

【问题讨论】:

  • 解决方案取决于您的操作设置,这很难从您的帖子中获得感觉。没有关于您的部署过程如何工作的文档?在生产服务器上编辑文件可能是这样做的,但似乎很容易出错。
  • 感谢您的及时回复。我同意,直接对生产服务器进行更改似乎非常冒险。
  • @Hans 操作设置如下。 (1) 在 MS Visual Studio 中进行代码更改。 (2) 代码更改通过 Azure DevOps 推送到 GitHub 存储库以进行暂存。 (3) 在生产服务器上运行脚本以将更改应用到 Docker 容器。脚本内容: (a) docker network create nginx-network; (b) docker-compose down; (c) git pull git@ssh.dev.azure.com:v3/{repo}; (d) docker-compose build --force-rm; (e) docker-compose up -d。我正在寻找一种解决方案来在本地(在 VS 中)修改 nginx.conf 和 Docker 文件,然后使用 3 步 DevOps/Git 过程来上传它们。
  • nginx.conf 是 repo 的一部分吗? nginx 容器是使用 Azure DevOps 构建的吗?这将是一个很好的方法。然后,您将更改存储库中的 nginx 配置,DevOps 管道将构建一个新映像并将其部署到生产环境。
  • @Hans 是的,我的开发机器上的仓库中有 nginx.conf 和 Dockerfile 的本地副本。我已经验证了我的开发机器的内容是 GitHub 存储库和产品服务器的镜像。修改 nginx.conf 文件很简单。但是,我不知道我在用 Docker 做什么,因此我很担心。

标签: docker visual-studio nginx azure-devops


【解决方案1】:

谢天谢地,这非常简单,NGIX 有关于这个主题的很好的文档(参见 Deploying NGINX and NGINX Plus on DockerCopying Content and Configuration Files from the Docker Host 部分)。

  1. 找到已部署解决方案的Dockerfile(通常在项目或解决方案根目录中)
  2. 复制当前 NGIX 配置文件的内容(通过浏览容器映像或在源代码中查找配置文件)
  3. 在您的源代码中创建一个名为 conf 的目录。
  4. 将当前配置复制到conf 内的文件中,并将任何更改应用到配置文件。
  5. 更新Dockerfile 以将conf 中的文件复制到NGIX 在启动时加载配置文件的容器中。在FROM ngix 行之后将以下行添加到Dockerfile(注意:行可能会有所不同,但使用ngix 作为基础图像应该很明显):COPY conf {INSERT RELATIVE PATH TO CONF PARENT FOLDER}

这将在创建时将您的本地配置文件复制到容器中,NGIX 将在启动时加载。

注意:还有其他解决方案可以在不重建容器的情况下支持配置更改。

【讨论】:

  • 感谢您的回复。我将继续寻找一种方法,该方法允许我在本地(在我的 Visual Studio 解决方案中)修改 nginx.conf 和 Dockerfile,然后使用 Azure DevOps 和 Git 推送它们进行暂存。我发现了在生产服务器上运行的以下脚本,用于将更改从 GitHub 推送到 Docker 容器。脚本内容: (a) docker network create nginx-network; (b) docker-compose down; (c) git pull git@ssh.dev.azure.com:v3/{repo}; (d) docker-compose build --force-rm; (e) docker-compose up -d。这似乎更直接。
  • 当然可以。关闭容器,通过 SSH 更新配置,然后启动容器。
  • 尝试通过 Azure DevOps/Git 管道将修改后的 nginx.conf 文件从 Visual Studio 推送到生产服务器时,我在 SSH 中收到以下错误消息:“您对以下文件的本地更改将被合并覆盖:nginx.conf。”我不确定错误消息告诉我什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 2019-07-04
相关资源
最近更新 更多