Docker 安装 Nginx
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动
目前,正在
星球
内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.2 + Vite 4
,手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 144 小节,累计 22w+ 字,讲解图:923 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 440+ 小伙伴加入,欢迎点击围观
。
本小节中,我们将学习如何通过 Docker 快速安装 Ngnix, 并反向代理到后台的 Web 服务。
一、下载 Nginx 镜像
docker pull nginx:1.19.4
PS:小哈这里下载的是 1.19.4 版本 Nginx 镜像,你可以在 Docker Hub 上查找你想要的可用版本镜像。
命令执行成功后,通过 docker images
命令检查一下镜像是否下载成功:
检查ngnix镜像是否下载成功
二、运行 Nginx 容器
docker run -d -p 80:80 --name nginx nginx:1.19.4
参数说明:
-p 80:80
: 将容器的 80 端口映射到宿主机的 80 端口上;-d
: 以后台方式运行镜像;--name
: 指定容器的名称为 nginx;
命令执行完成后,通过 docker ps
命令确认一下容器是否启动成功。
Nginx 容器运行成功后,访问 http://localhost
,即可看到 Nginx 欢迎页面:
提示:访问
http://localhost
在不指定端口的情况下,默认端口号为 80
nginx访问成功
三、复制 Nginx 配置文件至宿主机
因为容器重启会丢失内部数据,因此要将需要持久化的文件挂载到宿主机中,以防数据丢失。
挂载之前,复制容器中需要持久化的相关配置文件到宿主机的指定路径下:
# 复制名称为 nginx 容器中 /etc/nginx/nginx.conf 文件夹到宿主机的 /docker/nginx 路径下,宿主机的持久化目录根据你的需要自定义路径
docker cp nginx:/etc/nginx/nginx.conf /docker/nginx
# 复制名称为 nginx 容器中 /etc/nginx/conf.d 文件到宿主机的 /docker/nginx 路径下
docker cp nginx:/etc/nginx/conf.d /docker/nginx
复制完成后,查看指定路径的配置文件,如下:
四、修改 Nginx 配置文件,添加反向代理
先通过命令 ifconfig
命令获取 docker0
网卡的 ip 地址:
PS: 因为我需要反向代理的服务部署在本机的 Docker 容器中,所以用的这个 IP,如果你用的外网其他地址,可自行修改。
接下来,在 conf.d/default.config
中添加反向代理相关配置:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到后台 Web 服务
proxy_pass http://172.17.0.1:8090;
五、删除刚刚启动的 Nginx 容器,新启动一个
先删除之前启动的 nginx 容器:
docker rm -f nginx
完成后,执行启动 Nginx 容器命令:
docker run -d \
-p 80:80 \
--name nginx \
-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
-v /docker/nginx/logs:/var/log/nginx \
nginx:1.19.4
参数说明:
-p 80:80
:将容器的 80 端口映射到主机的 80 端口;-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf
:将容器中的 /etc/nginx/nginx.conf 文件挂载到宿主机中的 /docker/nginx/nginx.conf 文件;-v /docker/nginx/conf.d:/etc/nginx/conf.d
:将容器中 /etc/nginx/conf.d 目录挂载到宿主机中的 conf.d 目录下;-v /docker/nginx/logs:/var/log/nginx
:将容器中的 /var/log/nginx 目录挂载到宿主机中的 /docker/nginx/logs 目录下, 用以查看 Nginx 日志;
运行命令成功后,再次访问 http://localhost
,即可看到反向代理到 Web 服务成功了:
访问80端口,看方向代理是否成功