gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:20:22 25 4
gpt4 key购买 nike

我有一个 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我只看到了一个实际更改每个主机和默认位置设置的示例。但是完全没有添加新位置。

我已经在 jwilder/nginx-proxy 的问答中发布了这个,但没有得到回应。

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

最佳答案

此答案基于此 comment来自官方的#553问题讨论nginx-proxy repo 。首先,您必须创建 default_location具有静态位置的文件:

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

并将其保存到例如 nginx-proxy项目根目录下的文件夹。然后,您必须将此文件添加到 /etc/nginx/vhost.d jwilder/nginx-proxy 的文件夹容器。您可以基于 jwilder/nginx-proxy 构建新镜像复制此文件,或者您可以使用 volumes 挂载它部分。此外,您必须在 webapp 之间共享静态文件。和 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 为您提供静态文件。

关于docker - 从 jwilder/nginx-proxy 提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54571819/

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