从 jwilder/nginx-proxy 提供静态文件

2024-01-02

我有一个 Web 应用程序(由 uwsgi 提供的 django),我使用 nginx 将请求代理到特定容器。 这是我的 default.conf 中的相关片段。

upstream web.ubuntu.com {
server 172.18.0.9:8080;
}
server {
server_name web.ubuntu.com;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
include uwsgi_params;
uwsgi_pass uwsgi://web.ubuntu.com;
}
}

现在我希望静态文件由 nginx 而不是 uwsgi 工作人员提供。

所以基本上我想添加类似的内容:

location /static/ {
autoindex on;
alias /staticfiles/;
}

到容器自动生成的服务器块。

我相信这应该使 nginx 服务于 /staticfiles 文件夹中对 web.ubuntu.com/static/* 的所有请求。

但由于配置(default.conf)是自动生成的,我不知道如何动态地将上述位置添加到服务器块:(

我认为位置块不能位于服务器块之外,并且每台服务器只能有一个服务器块?

所以我不知道如何在那里添加位置块,除非我在 nginx 出现后动态添加到 default.conf 然后重新加载它我猜。

我确实经历过https://github.com/jwilder/nginx-proxy https://github.com/jwilder/nginx-proxy我只看到一个实际更改每个主机和默认位置设置的示例。但完全没有关于添加新地点的事情。

我已经在 jwilder/nginx-proxy 的问答中发布了此内容,但没有得到回复。

如果有办法实现这一目标,请帮助我。


这个答案是基于这个comment https://github.com/jwilder/nginx-proxy/issues/553#issuecomment-339457619摘自官方#553问题讨论nginx 代理 https://github.com/jwilder/nginx-proxy.git回购。首先,您必须创建default_location具有静态位置的文件:

location /static/ {
    alias /var/www/html/static/;
}

并将其保存到例如nginx-proxy项目根目录中的文件夹。然后,您必须将此文件添加到/etc/nginx/vhost.d的文件夹jwilder/nginx-proxy容器。您可以根据以下内容构建新图像jwilder/nginx-proxy复制此文件,或者您可以使用挂载它volumes部分。此外,您必须在您的系统之间共享静态文件webapp and nginx-proxy使用共享卷的容器。结果,你的docker-compose.yml文件看起来像这样:

version: "3"

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    ports:
      - "80:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./nginx-proxy/default_location:/etc/nginx/vhost.d/default_location
      - static:/var/www/html/static

  webapp:
    build: ./webapp
    expose:
      - 8080
    volumes:
      - static:/path/to/webapp/static
    environment:
      - VIRTUAL_HOST=webapp.docker.localhost
      - VIRTUAL_PORT=8080
      - VIRTUAL_PROTO=uwsgi

volumes:
  static:

现在server阻止/etc/nginx/conf.d/default.conf将始终包含静态位置:

server {
    server_name webapp.docker.localhost;
    listen 80 ;
    access_log /var/log/nginx/access.log vhost;
    location / {
        include uwsgi_params;
        uwsgi_pass uwsgi://webapp.docker.localhost;
        include /etc/nginx/vhost.d/default_location;
    }
}

这将使 Nginx 为你提供静态文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 jwilder/nginx-proxy 提供静态文件 的相关文章

随机推荐

  • 与任何 Excel 操作进行上下文同步时发生内部错误

    我有多个 Excel 工作簿导致 Excel API 抛出异常An internal error has occurred在我们在应用程序中进行的第一次上下文同步中 Excel代码看起来像这样 let range ctx workbook
  • 搜索具有特定文件内容的文件

    我正在尝试编辑许多具有特定文件内容的文件 我需要搜索那些有一些内容的文件 有没有任何软件可以非常准确地进行此类搜索 我尝试使用 Windows 7 进行搜索 但看起来丢失了许多文件 Thanks Windows 本机搜索可能非常有限 我建议
  • 由外部包导出的 React 和 Webpack 渲染组件

    我正在尝试使用外部脚本中公开的 React 组件 捆绑A 在我的主 React 应用程序中 捆绑包B 外部 React header 组件 捆绑A 是通过加载
  • 如何防止groupby超类索引?

    假设您有以下半多索引对象 https pandas pydata org pandas docs stable user guide advanced html creating a multiindex hierarchical inde
  • Visual Studio 调用堆栈窗口不显示文件名

    我正在 Visual Studio 中调试程序 我想知道为什么我的程序会传递到特定单元 源代码文件 中的函数旁边 我以为调用堆栈会显示这一点 但事实似乎并非如此 此外 可显示条目列表甚至没有提及文件名 显示模块名称 显示参数类型 显示参数名
  • html5画布描边样式?

    我正在尝试将图像映射到使用描边样式和画布模拟布料的 3d 网格 我包含该图像 但它当前充当背景图像 实际上并不像波纹那样与 布料 一起流动 即随着网格的流动 图像是静态的 这是jsfiddle http jsfiddle net S7nBq
  • 在 DIV 中换行时缩进文本的最佳方法是什么?

    所以我有一个包含一些动态文本的 DIV 假设我知道文本和字体大小 但不知道 DIV 的大小 我希望 DIV 中文本的显示足够智能 以便在文本换行时显示缩进 假设我的原始文本看起来像这样 Lorem ipsum dolor sit amet
  • JavaScript 回调函数中的变量总是获取循环中的最后一个值? [复制]

    这个问题在这里已经有答案了 我正在尝试执行以下操作 我有一组图像并选择 下拉 HTML 元素 每个元素 30 个 我尝试在从 1 到 30 的循环中使用 AddEventListener 以便当我更改选择的值时 图像 src 会更新 并且图
  • 如何从日期时间中删除时间

    数据库中DATE字段的格式如下 2012 11 12 00 00 00 我想从日期中删除时间并返回日期 如下所示 11 12 2012 首先 如果您的日期采用 varchar 格式 请更改它 将日期存储为日期 https sqlblog o
  • 如何使用户从唯一一台机器(通过获取CPU Serial)登录到ASP.NET-MVC Web应用程序

    设想 我已经使用个人用户帐户部署了 Web ASP NET MVC 5 应用程序 Identity 2 x 每个用户都有一个电子邮件和密码来通过浏览器登录网络应用程序 这意味着用户可以通过任何具有互联网浏览器的设备登录 我想启用用户登录 条
  • 为什么 Java 比其他解释语言具有更好的性能? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Delphi 查找目录中最旧文件的最快方法

    HI 我们有大量的远程计算机将视频捕获到磁盘驱动器上 每台摄像机都有自己独特的目录 任何一个磁盘上最多可以有 16 个目录 我试图找到磁盘上最旧的视频文件 但使用FindFirst FindNext比较文件创建日期时间需要很长时间 有谁知道
  • iOS7 自动布局、视图调整大小和 iAds

    我在 iOS 7 项目中使用自动布局 具有以下视图层次结构 主视图 容器视图 按钮 按钮 图像视图 横幅视图 iAd 横幅视图 主视图和容器视图是屏幕的全宽和全高 我在容器视图上有水平和垂直空间约束 坚持主视图 屏幕的高度和宽度 而且 Co
  • 删除 EnumDropDownListFor 框顶部的空白/空条目

    我正在使用枚举渲染一个下拉列表框 我只有 3 个选项 但由于某种原因它显示了 4 个 顶部和默认选项只是空白 空 我希望将其删除 我希望顶部 默认值为 Option1 Enums public enum EventType Display
  • php 中俄语的 mb_convert_encoding

    如何使用 mb convert encoding 或任何其他方法在 PHP 中将俄语字符转换为 utf 8 您尝试过以下操作吗 但不确定它是否有效 mb convert encoding str UTF 8 auto
  • 如何成功地将图像嵌入 HTML 中以在网络邮件客户端中显示?

    我正在尝试使用以 Base 64 数据 URL 编码的图像在 HTML 中进行签名 这是一个例子 img src 它与 Mac 上的 Mail 或 Thunderbird 等邮件软件配合良好 但不适用于 gmail outlook roun
  • includeHTML 用于shiny、shinyApps.IO 和 Dropbox

    晚上好 快速问题 与 R shiny 应用程序相关 托管在shinyApps IO 上 我希望在我的 Dropbox 帐户上驻留一个 HTML 文件 并使用 includeHTML 将其包含到一个闪亮的应用程序中 这样做的主要原因是我的本地
  • 从 iframe 访问父 URL

    好的 我有一个页面 在这个页面上有一个 iframe 我需要做的是在 iframe 页面上 找出主页的 URL 是什么 我已经搜索过 我知道如果我的 iframe 页面位于不同的域上 这是不可能的 因为这是跨站点脚本 但我读过的所有地方都说
  • 根据列的组合在数据框中创建唯一标识符

    我有以下数据框 id Lat Lon Year Area State 50319 36 0629 62 3423 2019 90 Iowa 18873 36 0629 62 3423 2017 90 Iowa 18876 36 0754 6
  • 从 jwilder/nginx-proxy 提供静态文件

    我有一个 Web 应用程序 由 uwsgi 提供的 django 我使用 nginx 将请求代理到特定容器 这是我的 default conf 中的相关片段 upstream web ubuntu com server 172 18 0 9