gpt4 book ai didi

docker - 无法启动 nginx-proxy docker 镜像,错误为 "Contents of/etc/nginx/conf.d/default.conf did not change"

转载 作者:行者123 更新时间:2023-12-02 18:21:42 26 4
gpt4 key购买 nike

我正在玩“nginx-proxy”,将图像“jwilder/nginx-proxy:latest”拉到我的本地主机,尝试启动它但收到此错误“/etc/nginx/conf.d/default.conf 的内容”没有改变。跳过通知“nginx -s reload””,当我尝试在端口 80 访问服务器时:它返回 503 Bad Gateway:

这是我的 docker-compose 文件:
version: '3.0'
services:
proxy:
image: jwilder/nginx-proxy:latest
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /docker/certs:/etc/nginx/certs:ro
network_mode: "bridge"

和我遇到的错误
WARNING: /etc/nginx/dhparam/dhparam.pem was not found. A pre-generated dhparam.pem will be used for now while a new one is being generated in the background.Once the new dhparam.pem is in place, nginx will be reloaded.
forego | starting dockergen.1 on port 5000
forego | starting nginx.1 on port 5100
dockergen.1 | 2018/07/18 04:14:14 Generated '/etc/nginx/conf.d/default.conf' from 1 containers
dockergen.1 | 2018/07/18 04:14:14 Running 'nginx -s reload'
dockergen.1 | 2018/07/18 04:14:14 Watching docker events
dockergen.1 | 2018/07/18 04:14:14 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'

任何想法都非常感谢。干杯

最佳答案

这是此图像的默认行为,您可以看到 /etc/nginx/conf.d/default.conf :

server {
server_name _;
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}

所以当你访问时,它会给 503错误。

这是一个服务发现服务,所以你需要使用它。

见官方示例:

docker-compose.yaml
version: '2'

services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro

whoami:
image: jwilder/whoami
environment:
- VIRTUAL_HOST=whoami.local

如果您使用 docker-compose up开始它,然后看看 /etc/nginx/conf.d/default.conf再次,您将看到:
server {
server_name _;
listen 80;
access_log /var/log/nginx/access.log vhost;
return 503;
}
# whoami.local
upstream whoami.local {
## Can be connected with "a_default" network
# a_whoami_1
server 172.20.0.2:8000;
}
server {
server_name whoami.local;
listen 80 ;
access_log /var/log/nginx/access.log vhost;
location / {
proxy_pass http://whoami.local;
}
}

在这里, jwilder/nginx-proxy观察 docker 的事件,并在 nginx 反向设置中添加代理。

所以如果执行 curl -H "Host: whoami.local" localhost在您的主机上,它将打印 I'm 5b129ab83266 .
server 172.20.0.2 nginx设置里面是你的应用容器的ip,每次启动一个新的容器都会改变,所以通过这个方法,你可以自由的知道你的应用容器的ip,使用 inverse proxy from nginx .

许多服务如 marathon-lb它是 marathon 的一个组成部分号称 mesos 框架的人也能负担得起这样的功能,也许 k8s还?无论如何,你需要知道这个图像的原理,一个有用的文档供你引用: http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

关于docker - 无法启动 nginx-proxy docker 镜像,错误为 "Contents of/etc/nginx/conf.d/default.conf did not change",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51393564/

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