LinuxCentOS7版本Docker部署nginx(配置反向代理、负载均衡保姆式教学)

首先附上docker的一些常用命令

基本操作命令
[repository]:[tag]。
在没有指定tag时,默认是latest,代表最新版本的镜像
mysql(Repository)存储库: 5.7(Tag)标签

docker pull nginx——拉取nginx镜像
docker images——查看拉取到的镜像
docker xx --help——查看xx的命令语法
docker save——导出镜像到磁盘
docker load——加载镜像
docker rmi——删除镜像
docker push——上传镜像

容器命令
docker run --name mn -p 80:80 -d nginx
docker run:创建并运行一个容器
--name:给容器起一个名字,比如叫做mn
-p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称,例如nginx

docker exec——进入容器执行命令
docker logs——查看容器运行日志
docker ps——查看所有运行的容器及状态
docker pause——暂停容器
docker unpause——运行容器
docker stop——停止容器
docker start——开启容器
docker rm——删除指定容器

一、安装docker

1.下载脚本

curl -fsSL https://get.docker.com -o get-docker.sh

2.执行脚本

sh get-docker.sh

3.设置docker阿里镜像,否则docker pull的下载速度贼慢

①有文件夹省略这步

mkdir -p /etc/docker

②设置docker阿里镜像

tee /etc/docker/daemon.json <<-'EOF'

{ "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"]}

EOF

④后台程序重新加载

systemctl daemon-reload

⑤重新启动docker服务

systemctl restart docker

⑥查看docker是否安装成功

docker -v

二、使用强大如斯的docker一键安装nginx

docker pull nginx

docker容器可以做到秒级启动,用完即可删除,如果需要做文件持久化存储需要把容器内的目录和配置文件挂载出来

nginx通常需要持久化的目录以及配置的容器路径,可能还得挂载个日志目录

①nginx容器内部署前端的路径

/usr/share/nginx/html

② nginx容器内配置文件路径。nginx.conf:配置反向代理、负载均衡、动静分离....

/etc/nginx/nginx.conf

二、开始正式挂载容器文件目录

1. 在宿主机,创建两个目录用来存放上边说的前端文件,nginx配置文件

回到根目录

cd / 

进入咱们的/usr/local下

cd /usr/local

创建nginx文件夹后再进入nginx文件夹里创建前端文件夹,nginx配置文件夹

mkdir nginx  //创建nginx文件夹

cd nginx  //进入nginx文件夹

mkdir html  //创建前端文件夹

mkdir conf  //创建nginx配置文件夹

2.使用docker 随便创建一个nginx容器

docker run --name nginx --rm -d nginx 

--rm 表示容器停止后就删除该容器
-d 表示后台运行容器
--name 给容器起名字


3.使用以下下命令你可以看到nginx 容器 正在运行中

docker ps


4.把nginx容器内的默认配置文件给拷贝到刚才创建的nginx宿主机配置文件夹目录/usr/local/nginx/conf目录下

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

5.拷贝完成后停止nginx容器

docker stop nginx

 再使用docker ps -a 查看容器 你就看不到了
-a 表示查看所有容器, 不加查看正在运行的容器

6.ojbk了现在就开始正式的文件挂载,(注意:以下是一整行命令)

docker run --restart-always --name mynginx -d -p 80:80 -v /usr/local/nginx/html: /usr/share/nginx/html -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx

--restart-always 保证特殊情况重启容器
-p 把容器内的端口映射到宿主机, -p [宿主机端口]:[容器内端口]
这样我们直接在浏览器输入你的服务器ip就可以看到nginx的欢迎页了,阿里云服务器还要在安全组内开放80端口
-v 就是把容器内的目录映射到宿主机的目录 这样就算容器删除了我们的数据还在 

以后部署的时候就可以把前端打包后的静态资源放在/usr/local/nginx/html路径下,然后执行docker restart nginx就ok啦

三、配置nginx反向代理

1.进入nginx配置挂载目录/usr/local/nginx/conf,打开目录中配置文件vim nginx.conf,在http块中添加以下代码

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

这样子就可以用本机的80端口代理其它服务器的8080端口

location 指令说明
该指令用于匹配 URL。
语法如下:
1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配
成功,就停止继续向下搜索并立即处理该请求。
2、~:用于表示 uri 包含正则表达式,并且区分大小写。
3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。
4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字
符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location
块中的正则 uri 和请求字符串做匹配。
注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
四、配置nginx负载均衡
1.进入nginx配置挂载目录/usr/local/nginx/conf,打开目录中配置文件 vim nginx.conf,在http块中添加以下代码
    
http{
    #upstream:up服务流
    #myserver:自定义服务流名称
    upstream myserver{
        #负载均衡五种策略,这里写的是iphash与权重,默认不写则为轮询策略
        ip_hash;
        #===========
        #需要代理的服务器ip地址以及端口,并且设置了权重
        server 115.28.52.63:8080 weight=1;
        server 115.28.52.63:8181 weight=1;
    }

    server{
       #监听的端口
       listen 80;
       #字符格式
       charset utf-8;
       #当前的服务器ip
       server_name 192.168.112.135;
 
       location / {
          #代理上边自定义的服务流名称
          proxy_pass http://myserver;
          #被代理服务器返回默认的响应头中的location头域以及refresh头域数值
          proxy_redirect default;
          #连接超时 默认为60秒
          proxy_connect_timeout 65s;
          #读取超时 默认为60秒
          proxy_read_timeout 65s;
          #发送超时 默认为60秒
          proxy_send_timeout 65s;
       }
    }
}
nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服
务,而且 Nginx 提供了几种分配方式(策略):
1 、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2 weight
weight 代表权 , 重默认为 1, 权重越高被分配的客户端越多
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。 例如:
upstream server_pool {
server 192.168.5.21 weight = 10 ;
server 192.168.5.22 weight = 10 ;
}
3 ip_hash
每个请求按访问 ip hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
例如:
upstream server_pool {
ip_hash ;
server 192.168.5.21:80 ;
server 192.168.5.22:80 ;
}
4 fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool {
server 192.168.5.21:80 ;
server 192.168.5.22:80 ;
fair ;
}

一起学习

嗯嗯嗯......终于到了激动人心的时候了,兄弟扫描下面这个小码,我来帮你搞定一切,帝王般的服务你值得拥有,免费的哟,记得备注下:曹家的小仙女 / 小哥哥,微信:BitPlanet

         

最后附上

一寸光阴一寸金,寸金难买寸光阴。请珍惜现在美好的青春,咱们一起努力奋斗,创造美好未来

拜托拜托!!!拜托拜托!!!拜托拜托!!!

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡广毕业设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值