Docker 安装 Nginx
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观
本小节中,我们将学习如何通过 Docker 快速安装 Ngnix, 并反向代理到后台的 Web 服务。
一、下载 Nginx 镜像
docker pull nginx:1.19.4
PS:小哈这里下载的是 1.19.4 版本 Nginx 镜像,你可以在 Docker Hub 上查找你想要的可用版本镜像。
命令执行成功后,通过 docker images
命令检查一下镜像是否下载成功:
二、运行 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 容器中 /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 服务成功了: