Nginx实战

Nginx实战

介绍

Nginx是一款高性能的http服务器、反向代理服务器、电子邮件(IMAP/POP3)代理服务器。

应用场景:

  1. http服务器:Nginx是一个http服务器,可以独立提供http服务,可以作为网页的静态服务器。
  2. 虚拟主机:可以实现一台服务器虚拟出多个网站。
  3. 反向代理、负载均衡:服务器集群可以使用Nginx做反向代理,使多台服务器可以平均分担负载。

一、使用Docker安装和运行Nginx

可参考:Docker部署Mysql+Tomcat+Nginx+Redis——CentOS8-arm64

同时新增一个~/nginx/conf.d/80.conf端口配置文件:

server {
   listen 80; # 监听的端⼝
   server_name localhost; # 域名或ip
   location / { # 访问路径配置
     root /usr/share/nginx/html;# 根⽬录
     index index.html index.htm; # 默认⾸⻚
   }
   error_page 500 502 503 504 /50x.html; # 错误⻚⾯
     location = /50x.html {
     root html;
   }
}

在最后一步创建并运行docker容器时,使用以下命令映射三个端口到主机:

docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx

二、Nginx静态网站部署

由于上一步创建容器的时候已经将~/nginx/html目录挂在到容器的/usr/share/nginx/html目录,因此在~/nginx/html目录中创建一个index.html文件并写入:

index.html --port=80

随后访问 http://虚拟机ip:80 即可看到页面中输出上述内容

端口绑定
  1. 新建静态文件

    ~/nginx目录下新建文件夹index,并进入。创建index.html:

    index.html --port=81
    

    ~/nginx目录下新建文件夹regist,并进入。创建regist.html:

    index.html --port=82
    

    将这两个目录放到容器的/usr/share/nginx目录下:

    docker cp ~/nginx/index/ c_nginx:/usr/share/nginx
    docker cp ~/nginx/regist/ c_nginx:/usr/share/nginx
    
  2. 新建一个Nginx配置文件,配置端口访问路径及访问的首页文件

    server {
       listen 81; # 监听的端⼝
       server_name localhost; # 域名或ip
       location / { # 访问路径配置
         root /usr/share/nginx/index;# 根⽬录
         index index.html index.htm; # 默认⾸⻚
       }
       error_page 500 502 503 504 /50x.html; # 错误⻚⾯
       location = /50x.html {
         root html;
       }
     }
     
     server {
       listen 82; # 监听的端⼝
       server_name localhost; # 域名或ip
       location / { # 访问路径配置
         root /usr/share/nginx/regist;# 根⽬录
         index regist.html; # 默认⾸⻚
       }
       error_page 500 502 503 504 /50x.html; # 错误⻚⾯
       location = /50x.html {
         root html;
       }
     }
    
  3. 访问测试

    访问 http://虚拟机ip:81 可以看到页面输出的内容中端口号为81

    访问 http://虚拟机ip:82 可以看到页面输出的内容中端口号为82

域名绑定

Mac绑定域名可以在/etc/hosts文件中最后一行新增配置:

192.168.215.128 www.test.com

在本机访问 www.test.com 即访问IP地址192.168.215.128

如果在本机配置了域名绑定,则在nginx配置文件中的server_name可以写成配置过的域名。

三、Nginx反向代理与负载均衡

正向代理与反向代理
  1. 正向代理:针对客户端来说,nginx作为代理服务器可以转发客户端的请求到外网
  2. 反向代理:针对服务器来说,nginx将外部请求(客户端请求)转发到内部网络上的服务器,并将从服务器得到的结果返回给客户端
配置反向代理
  1. 在docker中部署并运行tomcat

    由于我用的是m1芯片的macbook,因此需要拉取arm64版的tomcat:

    docker pull arm64v8/tomcat

    创建容器,设置端口、目录映射:

    # 在/root⽬录下创建tomcat⽬录⽤于存储tomcat数据信息
    mkdir ~/tomcat
    cd ~/tomcat
    
    docker run -id --name=c_tomcat \
    -p 8080:8080 \
    -v $PWD:/usr/local/tomcat/webapps \
    tomcat
    

    创建一个测试页面:

    cd ~/tomcat
    mkdir ROOT
    cd ROOT
    vim index.html
    

    index.html

    tomcat index.html --port=8080
    

    测试访问:

    访问 http://虚拟机ip:8080/index.html 即可看到写在index.html文件中的内容。

  2. 配置反向代理

    新建nginx配置文件~/nginx/conf.d/proxy.conf

    upstream tomcat-test{
       server 192.168.215.128:8080; # 这里填写你的虚拟机ip:8080
    }
    server {
       listen 80; # 监听的端⼝
       server_name www.test.com; # 域名或ip
       location / { # 访问路径配置
         proxy_pass http://tomcat-test;
         index index.html index.htm; # 默认⾸⻚
       }
    }
    

    重启nginx 访问: http://www.test.com 即可看到部署tomcat时访问的index.html文件内容

负载均衡

负载均衡,英⽂名称为Load Balance,其意思就是分摊到多个操作单元上进⾏执⾏,例如Web服务器、FTP服务器、企业关键应⽤服务器和其它关键任务服务器等,从⽽共同完成⼯作任务。

配置负载均衡
  1. 将反向代理时创建的tomcat文件夹复制两份,分别为tomcat-8081、tomcat-8082

  2. 修改ROOT目录下index.html文件的内容:

    ~/tomcat-8081/ROOT/index.html

    tomcat index.html --port=8081
    

    ~/tomcat-8082/ROOT/index.html

    tomcat index.html --port=8082
    
  3. 使用docker创建3个tomcat容器,端⼝分别为8080 ,8081,8082 。

    docker run -id --name=c_tomcat1 \
    -p 8081:8080 \
    -v ~/tomcat-8081/:/usr/local/tomcat/webapps \
    tomcat
    
    docker run -id --name=c_tomcat2 \
    -p 8082:8080 \
    -v ~/tomcat-8082/:/usr/local/tomcat/webapps \
    tomcat
    
  4. 启动这三个服务

  5. 新建Nginx配置文件~/nginx/loadbalance.conf

    upstream tomcat-lb {
       server 192.168.215.128:8080;
       server 192.168.215.128:8081;
       server 192.168.215.128:8082;
    }
    server {
       listen 80; # 监听的端⼝
       server_name www.test.com; # 域名或ip
       location / { # 访问路径配置
         # root index;# 根⽬录
         proxy_pass http://tomcat-lb;
         index index.html index.htm; # 默认⾸⻚
       }
       error_page 500 502 503 504 /50x.html; # 错误⻚⾯
       location = /50x.html {
         root html;
       }
    }
    
  6. 访问测试

    访问 http:.//www.test.com 刷新观察网页内容中的端口号,发现这三个端口号是轮询访问的。

    如果其中⼀台服务器性能⽐较好,想让其承担更多的压⼒,可以设置权重。

    ⽐如想让8081端口的服务器出现次数是其它服务器的2倍,则修改配置如下:

    upstream tomcat-lb {
       server 192.168.215.128:8080;
       server 192.168.215.128:8081 weight=2;
       server 192.168.215.128:8082;
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值