使用Docker实现Nginx反向代理

 更新时间:2023年06月13日 09:33:48   作者:九洲带鱼  
本文主要介绍了使用Docker实现Nginx反向代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本机是在CentOS7上面进行操作的

1.首先安装好Dokcer,这里不再赘述

2.Docker安装Nginx容器

2.1首先需要创建Nginx配置文件,之后完成挂载

启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。

# 创建挂载目录
mkdir -p /home/nginx/conf
mkdir -p /home/nginx/log
mkdir -p /home/nginx/html
# 生成容器
docker run --name nginx -p 9001:80 -d nginx

然后将nginx中的配置文件复制到外部环境

# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/
# 删除正在运行的nginx容器
docker rm -f nginx

2.2重新启动nginx容器

docker run -p 9002:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx:latest

命令介绍:

  • –name nginx    启动容器的名字
  • -d    后台运行
  • -p 9002:80    将容器的 9002(后面那个) 端口映射到主机的 80(前面那个) 端口
  • -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf    挂载nginx.conf配置文件
  • -v /home/nginx/conf/conf.d:/etc/nginx/conf.d    挂载nginx配置文件
  • -v /home/nginx/log:/var/log/nginx    挂载nginx日志文件
  • -v /home/nginx/html:/usr/share/nginx/html    挂载nginx内容
  • nginx:latest    本地运行的版本
  • \    shell 命令换行

2.3浏览器输入http:ip:9002访问,发现是nginx首页,安装成功

3.安装Tomcat镜像

下载tomcat8

docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

然后进行访问,如果访问不到,原因是

新版tomcat的/bin/bash目录下有webapps和webapps.dist两个目录
webapps里面没有任何东西 total为0,实际有东西的是webapps.dist目录下
rm -rf webapps #删除webapps文件夹
mv webapps.dist webapps #改名为webapps

重启tomcat进行访问,发现可以访问到了

4.配置Nginx文件

效果:访问http://ip:9002/可以看到tomcat的首页

原效果:访问http://ip:9002/看到的是nginx的首页

cd /home/nginx/conf

 在http下面添加如下代码:

server{
       #监听的端口 本例中9002监听nginx80端口,所以这里写80
       listen 80;
       #字符格式
       charset utf-8;
       #当前的服务器ip
       server_name ip;
       location / {
          #要代理去哪个服务器的ip以及端口
          proxy_pass http://ip:8080;
          #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
          proxy_redirect default;
       }
}

重启nginx

docker restart nginx

访问http://ip:9002/可以看到tomcat的首页

5.拓展

要达到的效果:

1.再创建两个tomcat容器,和上面一样进行配置,一个为8081端口,一个为8082端口

2.在这两个tomcat里创建不同的目录,里面放一个html文件

3.配置nginx

4.访问http://ip/edu/a.html访问到的是8081的html

5.访问http://ip/vod/a.html访问到的是8082的html

#创建好两个tomcat容器后,进入容器
docker exec -it 容器ID /bin/bash
cd webapps
mkdir edu #8081端口的容器创建这个,8082的创建名为vod的目录
vim a.html
#如果没有vim则安装一个,其他方法也行,搞个html进去就行
apt-get update
apt-get install vim

a.html 里简单写个<h1>端口号</h1>就行,只是看效果

重启这几个tomcat容器,访问发现成功

最后配置nginx配置文件

http下面添加:

server{
       #监听的端口
       listen 9001;
       #字符格式
       charset utf-8;
       #当前的服务器ip
       server_name ip;
       location ~ /edu/ {
          #要代理去哪个服务器的ip以及端口
          proxy_pass http://ip:8081;
          #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
          proxy_redirect default;
       }
       location ~ /vod/ {
          #要代理去哪个服务器的ip以及端口
          proxy_pass http://ip:8082;
          #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
          proxy_redirect default;
       }
}

重启nginx,访问,发现成功。

ps 这个8001是我写错了,看效果就行

到此这篇关于使用Docker实现Nginx反向代理的文章就介绍到这了,更多相关Docker Nginx反向代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用nginx解决cookie跨域访问的方法

    利用nginx解决cookie跨域访问的方法

    本篇文章主要介绍了利用nginx解决cookie跨域访问的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Nginx 根据URL带的参数转发的实现

    Nginx 根据URL带的参数转发的实现

    这篇文章主要介绍了Nginx 根据URL带的参数转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 接口服务在Nginx中提示HTTP 499问题的排查步骤

    接口服务在Nginx中提示HTTP 499问题的排查步骤

    本文详细介绍了如何在Nginx中启用请求时间日志以及如何在没有该日志的情况下通过替代方法排查HTTP499问题,重点讨论了前端超时配置差异和请求参数导致的文件大小差异,并提供了具体的排查步骤,需要的朋友可以参考下
    2026-03-03
  • nginx-rtmp-module模块实现视频点播的示例代码

    nginx-rtmp-module模块实现视频点播的示例代码

    本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Nginx+Keepalived实现双机热备

    Nginx+Keepalived实现双机热备

    这篇文章主要介绍了Nginx+Keepalived实现双机热备,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx中实现请求的缓存数据过期通知

    Nginx中实现请求的缓存数据过期通知

    Nginx 作为高性能的反向代理服务器,缓存机制是其优化性能的重要手段之一,本文主要介绍了Nginx中实现请求的缓存数据过期通知,感兴趣的可以了解一下
    2024-09-09
  • Nginx内网单机反向代理的实现

    Nginx内网单机反向代理的实现

    本文主要介绍了Nginx内网单机反向代理的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • nginx使用replace-filter-nginx-module实现内容替换的示例

    nginx使用replace-filter-nginx-module实现内容替换的示例

    本篇文章主要介绍了nginx使用replace-filter-nginx-module实现内容替换的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 基于Xen的VPS ubuntu+nginx+php安装教程

    基于Xen的VPS ubuntu+nginx+php安装教程

    跟踪vps已经很久了,但是因为需要特殊端口开服务,所以符合条件的多为Xen平台的vps。众多比较之后选择了vpslink在西雅图机房,速度还不错。
    2010-07-07
  • Nginx FastCGI缓存的实现示例

    Nginx FastCGI缓存的实现示例

    Nginx的FastCGI缓存是一种性能优化手段,通过缓存动态内容减少对后端服务器的请求,提高系统响应速度,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12

最新评论