试着使用Docker和Nginx镜像,搭建一个反向代理
我对Docker镜像 “jwilder/nginx-proxy” 并不太了解,所以我找到了下面的文章。
【学习如何搭建反向代理服务器 | 北方极客】
http://tech.respect-pal.jp/reverse_proxy_cooking/
对于那些想尝试使用反向代理服务器的人来说,这是一篇推荐的文章!我参考了这篇文章并尝试了实际实验。
(请注意,我根据自己的理解稍微改变了部分内容,请您了解)
目录结构
将用于在浏览器中显示Nginx容器的docker-compose.yml文件放置在nginx1、nginx2目录中,将用于反向代理的docker-compose.yml文件放置在proxy目录中。
我已经上传到Github,您可以从这里下载完整的文件:https://github.com/Vc2R6SJeCYR7/nginx-reverse-proxy。
reverse-proxy
├─nginx1
│ └─etc
│ └─nginx
│ └─conf.d
├─nginx2
│ ├─etc
│ │ └─nginx
│ │ └─conf.d
│ └─html
└─proxy
├─etc
│ └─nginx
│ └─conf.d
└─html
创建网络 (CJWord)
为了使容器之间能够进行通信,我们需要创建一个网络。
$ docker network create --driver bridge shared
Nginx的容器
将在浏览器中显示的“nginx1”和“nginx2”设置如下。
nginx1容器
version: '3'
services:
nginx1:
image: nginx:latest
container_name: 'nginx1'
volumes:
- ./html:/usr/share/nginx/html
- ./etc/nginx/conf.d/:/etc/nginx/conf.d
environment:
VIRTUAL_HOST: 'blog1.nginx.com'
networks:
default:
external:
name: shared
与nginx1相同的nginx2容器。
version: '3'
services:
nginx2:
image: nginx:latest
container_name: 'nginx2'
volumes:
- ./html:/usr/share/nginx/html
- ./etc/nginx/conf.d/:/etc/nginx/conf.d
environment:
VIRTUAL_HOST: 'blog2.nginx.com'
networks:
default:
external:
name: shared
反向代理容器
docker-compose.yml文件进行改写。
使用以下文件启动用于反向代理的nginx容器。
version: '3'
services:
proxy:
image: nginx:latest
container_name: 'proxy'
privileged: true
volumes:
- ./html:/usr/share/nginx/html
- ./etc/nginx/conf.d/:/etc/nginx/conf.d
ports:
- "80:80"
- "443:443"
restart: always
networks:
default:
external:
name: shared
默认配置文件夹
需要根据域名将「nginx1」和「nginx2」的显示进行分配的设置,因此需要创建如下所示的文件。
/reverse-proxy/proxy/etc/nginx/con.d/default.conf
server {
listen 80;
server_name blog1.nginx.com;
location / {
proxy_pass http://nginx1:8080;
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name blog2.nginx.com;
location / {
proxy_pass http://nginx2:8080;
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
启动容器
在每个目录中启动容器。
/reverse-proxy/nginx1 -> docker-compose up -d
/reverse-proxy/nginx2 -> docker-compose up -d
/reverse-proxy/proxy -> docker-compose up -d
请确认浏览器显示
现在,您可以通过多个域名访问名为“nginx1”和“nginx2”的容器。
在Mac或Windows上,通过修改hostsg文件等方式,设置IP地址和域名,然后在浏览器中访问”blog1.nginx.com”和”blog2.nginx.com”,您应该能够看到nginx显示目录。
反向代理真厉害。
仅提供一个选择,将以下内容以汉语为母语进行改写:
【jwilder/nginx-proxy – Docker Hub】
https://hub.docker.com/r/jwilder/nginx-proxy
【jwilder/nginx-proxy – Docker Hub】
https://hub.docker.com/r/jwilder/nginx-proxy
【jwilder/nginx-proxy – Docker Hub】
https://hub.docker.com/r/jwilder/nginx-proxy
【jwilder/nginx-proxy – Docker Hub】
https://hub.docker.com/r/jwilder/nginx-proxy
【jwilder/nginx-proxy – Docker Hub】
https://hub.docker.com/r/jwilder/nginx-proxy
【学习制作反向代理服务器 | 东北极客】
http://tech.respect-pal.jp/reverse_proxy_cooking/