kal*_*vis 5 network-programming nginx windows-server docker docker-compose
我有 2 个使用 Docker Compose 部署的 Windows Server Docker 容器。一个容器运行反向代理服务器,另一个容器运行 Web 服务器。Web 服务器提供一个简单的 index.html 页面。两者都在运行 Nginx。
运行时,一切都按预期工作。我可以通过代理访问内容。但是,如果我重新启动 Web 服务器,则会收到错误的网关错误。然后我需要重新启动代理以使其再次工作。
如何在无需重新启动代理的情况下使其正常工作?
Docker-撰写:
version: '3'
services:
web:
build:
context: ./web
dockerfile: ./dockerfile
proxy:
build:
context: ./proxy
dockerfile: ./dockerfile
ports:
- "8089:80"
Run Code Online (Sandbox Code Playgroud)
代理Dockerfile:
FROM sixeyed/nginx:windowsservercore
COPY nginx.conf C:/nginx/conf
CMD C:\nginx\nginx.exe
Run Code Online (Sandbox Code Playgroud)
代理 nginx.config:
events {
}
http {
server {
listen 80;
server_name localhost;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://web:80/;
}
}
}
Run Code Online (Sandbox Code Playgroud)
网络 Dockerfile:
events {
}
http {
server {
listen 80;
server_name localhost;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://web:80/;
}
}
}
Run Code Online (Sandbox Code Playgroud)
网页 nginx.config:
events {
}
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
Run Code Online (Sandbox Code Playgroud)
webnginx.conf中container\xe2\x80\x99s中的引用proxy是指nginx服务器启动时引用的容器的up。当web重新启动时,旧 ip 变得不可用并使用新 ip,web然后更新容器引用,但是 nginx 服务器仍然引用旧 ip,因为配置更改仅在启动/重新启动时应用。
当您的Web容器被替换时,您需要重新启动nginx代理服务器\xe2\x80\x94而不一定是容器\xe2\x80\x94。这可以通过使用 docker-gen 监视有关容器的元数据并在检测到更改时重新启动 nginx 来完成。幸运的是 nginx-proxy 可以为你做到这一点。nginx-proxy 维护得很好,是您必须自己维护此业务逻辑的替代方案。
\nNginx 代理: https: //github.com/nginx-proxy/nginx-proxy
\n| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |