Docker Nginx反向代理转发内网端口
1.安装nginx docker镜像获取nginx官方镜像docker pull nginx查看镜像库docker images使用nginx镜像来创建nginx容器实例docker run --name nginx_my -p 80:80 -d nginxrun 创建容器实例-- name 容器命名-v 映射目录-d 设置容...
1.安装nginx docker镜像
获取nginx官方镜像
docker pull nginx
查看镜像库
docker images
使用nginx镜像来创建nginx容器实例
docker run --name nginx_my -p 80:80 -d nginx
run 创建容器实例
-- name 容器命名
-v 映射目录
-d 设置容器后台运行
-p 本机端口映射 将容器的80端口映射到本机的80端口
语句最后一个nginx是使用镜像的名称
创建容器成功后,启动nginx容器
访问 本机测试 127.0.0.1:80
2.将nginx关键目录映射到本机
首先在本机创建nginx的一些文件存储目录
mkdir -p /root/nginx/conf /root/nginx/logs
logs: nginx日志目录
conf: nginx配置文件目录
查看nginx_my容器id
docker ps
将nginx-test容器配置文件copy到本地
docker cp 4f54ae11387b:/etc/nginx/nginx.conf /root/nginx/conf
创建新nginx容器nginx-web并将logs,conf目录映射到本地
docker run -d -p 8899:80 --name nginx_reverse -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx
3.设置反向代理
进入到/root/conf/nginx.conf 添加如下即可
server{
listen 80;
charset utf-8;
server_name _;
location / {
proxy_pass http://192.168.1.128:15672;
proxy_redirect default;
}
}
这样就可以用本机80端口代理本机15672端口了
测试反向代理是否可用
直接使用80访问端口
4.踩过坑
1. docker运行nginx为什么要使用 daemon off
Docker 容器启动时,默认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。
Docker未执行自定义的CMD之前,nginx的pid是1,执行到CMD之后,nginx就在后台运行,bash或sh脚本的pid变成了1。
所以一旦执行完自定义CMD,nginx容器也就退出了。
将nginx容器停止后修改配置文件出现nginx启动不起来解决方式:
# 在命令后面添加 nginx-debug -g 'daemon off;'
docker run -d -p 8899:80 --name nginx_reverse -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/logs:/var/log/nginx nginx nginx-debug -g 'daemon off;'
2. 修改配置文件后还是没有转发端口
这个可能是修改nginx配置文件后没有重启nginx, 需要重启nginx, 也就是重启docker nginx容器就可以
docker restart nginx_my
更多推荐
所有评论(0)