Nginx + docker 实现简单网页部署

本文将实现以下功能:

  • 公网访问

  • docker部署

  • SSL证书部署

  • 负载均衡

过程如下:

买好一个 VPS ,拿到 ip 地址和管理员密码,ssh 登录上去

这里采用 docker 部署,首先利用官方脚本安装 docker 并设置开机自启动

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

然后启动 Nginx 镜像的容器,把宿主机8080,8443端口转发到容器的80,443端口

 docker run -dit --name web -p 8080:80 -p 8443:443 nginx

然后访问一下ip:8080能看到Nginx欢迎界面

Nginx + docker 实现简单网页部署_第1张图片

现在进入容器进行配置,首先是安装 vim ,然后写一个简单的网页文件

 docker exec -it web bash
 apt update
 apt install vim
 cd /etc/nginx/conf.d
 vim default.conf

然后修改Nginx配置文件中的 root 位置,修改 server_name 为你要绑定的域名,再重启 Nginx 服务(nginx 配置文件详解见文末)

 nginx -s reload

这一步完成后就可以看见你写的网页了

Nginx + docker 实现简单网页部署_第2张图片

这里考虑到只有一台服务器,因此我的负载均衡思路是搭建Nginx集群,把刚刚写的配置文件和网页文件拷贝到每一个容器中,配置负载均衡,让其中一个容器成为主服务器

现在要做的就是把配置文件和网页文件拷贝到宿主机中。(这里我登录的 root 用户,所以拷贝到了 root 目录下)然后再映射这两个文件夹到新创建的Nginx集群的每个容器中去。

 docker cp web:/etc/nginx ~/conf
 docker cp web:/var/www/html ~/html
 docker run -d -it -p 8081:80 -p 8444:443 --name web1 -v ~/conf:/etc/nginx -v
 ~/html:/var/www/html nginx
 docker run -d -it -p 8082:80 -p 8445:443 --name web2 -v ~/conf:/etc/nginx -v
 ~/html:/var/www/html nginx

这里以web容器为主服务器,首先查看他们的ip地址,然后编辑web的Nginx配置文件(这里顺手把原来的web容器删除,以映射的方式重建了一下,这样就能直接编辑宿主机中的文件就能编辑到映射到容器中的文件)

 docker network ls
 docker network inspect f1c912c35ca8

Nginx + docker 实现简单网页部署_第3张图片

Nginx + docker 实现简单网页部署_第4张图片

Nginx + docker 实现简单网页部署_第5张图片

现在就能根据得到的ip地址编辑web容器的default.conf文件

upstream 172.17.0.2 {
     server 172.17.0.3 weight=1;
     server 172.17.0.4 weight=2;
 }
 server {
     listen 80;
     listen 443 ssl;
 ​
     server_name sukunblog.cn sukunblog.cn 172.17.0.2;
     ssl_certificate /etc/nginx/sukunblog.cn.pem;
     ssl_certificate_key /etc/nginx/sukunblog.cn.key;
     ssl_session_timeout 10m;
     ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
     ssl_ciphers ECDHE-RSA-AES128-GCMSHA256:
     ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_prefer_server_ciphers on;
     client_max_body_size 1024m;
     
     location / {
     root /var/www/html;
     index Hello.html;
     proxy_set_header HOST $host;
     proxy_set_header X-Forwarded-Proto $scheme;
     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.2;
     }
 }

Nginx 配置文件详解

此部分内容请前往我的博客进一步查看

你可能感兴趣的:(nginx,负载均衡,docker,运维)