如何通过 docker 安装 nginx, 并添加反向代理

如何通过 docker 安装 nginx, 并添加反向代理

1 个解决方案

AllenJiang
中间件研发,关注微信公众号 : 小哈学Java, 回复"666", 即可免费领取10G学习&面试资料

1. 拉取 nginx 镜像

docker pull nginx:alpine

Note:我这里用的是 alipne 轻量级的镜像

2. 复制 nginx 运行容器中的相关配置文件

先运行下载好的 nginx 镜像:

docker run --name nginx -d nginx:alpine

指定一个你需要存放 nginx 相关文件的目录,复制运行中 nginx 相关配置文件到宿主机中:

docker cp nginx:/etc/nginx/nginx.conf /docker/nginx

Note: 复制 nginx.cong 到宿主机的当前文件夹

docker cp nginx:/etc/nginx/conf.d /docker/nginx

Note: 复制 conf.d 文件夹到宿主机的当前文件夹

准备工作已做好:

3. 修改宿主机 nginx 配置,添加反向代理

先通过 ifconfig 命令获取 docker0 的 ip 地址:

Note: 因为我需要反向代理的项目访问地址在本机,所以用的这个 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;
proxy_pass http://172.17.0.1:8090;

4. 重新启动 nginx 容器

先删除之前启动的 nginx 容器:

docker rm -f nginx

成功后,回到配置文件的主目录,执行:

docker run -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 -d nginx:alpine 

参数说明:

  • -p 80:80:将容器的 80 端口映射到主机的 80 端口

  • --name nginx:将容器命名为 nginx

  • -v /docker/nginx/conf.d:/etc/nginx/conf.d:将主机中 conf.d 目录挂载到容器的 /etc/nginx/conf.d

  • -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf

  • -v /docker/nginx/logs:/var/log/nginx:将主机中当前目录下的 logs 挂载到容器的 /var/log/nginx, 用来方便的查看 Nginx 日志

启动成功,测试 nginx 的反向代理功能正常!