拉取nginx镜像
docker pull nginx
查看虚拟机内镜像
启动nginx看看是否成功
docker run -d --name "nginx" -p 89:80 nginx
启动后打开浏览器访问一下,确认是否可用
接下来我想修改 default.conf 配置文件,我们需要把我们自己定义的 default.conf挂载在 docker 中的nginx
首先创建挂载目录
mkdir -p /root/nginx/{conf,conf.d,html,log}
自定义 default.conf 文件 并设置负载均衡 8000 和8080
upstream tornado_server {
ip_hash;
server 172.20.1.157:8000;
server 172.20.1.157:8080;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tornado_server;
index dashboard index;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 150; // 设置代理超时时间150s
}
}
server {
listen 80;
server_name V2;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tornado_server;
index dashboard index;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 150; // 设置代理超时时间
}
}
注意这里的 proxy_pass 不能设置为 127.0.0.1,需要设置为公网IP,否则nginx无法识别,目前不知是什么原因,我猜想是docker无法识别127.0.0.1吧
文件创建成功后,上传到 /root/nginx/conf.d 目录下
现在来通过docker重新启动nginx
docker run --name nginx -d -p 89:80 --restart always -v /root/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /root/nginx/log:/var/log/nginx -v /root/nginx/html:/usr/share/nginx/html nginx
第一个-v:挂载nginx的反向代理配置文件,以方便在宿主机上直接修改容器的配置文件
第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志
第三个-v:挂载静态页面目录
http://172.20.1.157:89/api/v1 浏览器查看 项目
https://segmentfault.com/a/1190000015092063
https://outmanzzq.github.io/2019/01/25/Docker-nginx-reverse-proxy/