• 【深入浅出Nginx系列】Nginx入门?看这一篇就够了(实战篇)


    🏠个人主页:啊陈晓

    🎉学习方向:java后端开发

    🎁我的上一篇文章:【深入浅出Nginx系列】Nginx入门?看这一篇就够了(概念篇)

    💕如果我的文章对你有帮助,点赞、收藏、留言都是对我最大的动力

    【注意】: 

    由于篇幅原因,博主将Nginx的教学分为概念篇和实战篇,大家可以根据需求进行不同的模块的学习,当然搭配在一起学习效果更佳喔~

    【深入浅出Nginx系列】文章直通车~

    【深入浅出Nginx系列】Nginx入门?看这一篇就够了(概念篇)

    【深入浅出Nginx系列】Nginx入门?看这一篇就够了(实战篇)


    现在让我们正式开启进入今天的正文

    文章目录

    前言

    一、Linux环境下Nginx的搭建

    1.环境准备

    2.安装包下载 

    3.安装步骤

    二、Nginx实战实例——反向代理

     1.环境准备

     2.启动一个tomcat并测试

     3.在host文件中配置映射

     4.在 nginx.conf 配置文件中增加如下配置

     5.测试

    三、Nginx实战实例——负载均衡

    1.环境准备

    2.在 nginx.conf 配置文件中增加如下配置

    3.测试

    四、Nginx实战实例——动静分离

    1.环境准备

    2.在 nginx.conf 配置文件中增加如下配置

    3.测试

    五、Nginx实战实例——搭建高可用集群

    1.环境准备

    2.对主从服务器的keepalived.conf 配置文件进行修改

    3.添加检测脚本

    4.测试

    六、实战过程中遇到的问题

    1.防火墙问题

    2.配置目录问题

    3.location优先级问题

    总结


    前言

     博主最近在学习SpringCloud Alibaba相关的内容,在学习到Nacos集群的搭建和持久化时,发现整个集群架构需要搭建Niginx集群来实现整个集群的高可用性。而在此之前,博主也只是仅仅听闻过Nginx的一些信息,于是为了能够顺利搭建nacos集群,博主恶补了Nginx,并将所学的内容通过文章的形式分享给大家~

    下图即Nacos集群架构图:

    注意:今天我们所讲的内容都是基于上一讲中的概念、模型进行实战,因此在这一次的文章中对上文中已经讲解过的概念不再做赘述。


    一、Linux环境下Nginx的搭建

    1.环境准备

    JVM环境

    使用Xshell进行远程连接

    2.安装包下载 

    Nginx官网直通车http://nginx.org/

    进入官网后如下图所示:

     然后选择当前稳定的版本的Linux安装包,这里我选择的是1.22.0

     下载完后解压即可

    3.安装步骤

    先准备一台虚拟机并命名为Nginx-1

     打开终端输入ifconfig,获取ip后通过xshell进行远程连接 

     输入su切换到root,我们开始安装~ 

    在安装Nginx之前,我们先安装与Nginx相关的四个依赖包--通过以下命令一键安装四个依赖

    yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

     进入到/opt/software 目录(如果没有 software则自己创建) 

    1. cd /opt/software #进入对应目录
    2. mkdir software #如果目录不存在则在对应路径下创建文件夹

     将下载好的压缩包上传到software中,可以使用文件上传工具,也可以直接拖进去。

    接下来按如下顺序进行操作:

    1、解压Nginx压缩包

     tar -xvf nginx-1.12.2.tar.gz
    

    2、进入解压缩目录,依次输入以下命令

    1. ./configure
    2. make && make install

    3、进入/usr/local/nginx/sbin目录,启动Nginx

    1. ./nginx #启动nginx
    2. #下面是nginx的一些其他常用命令、均要在/usr/lcoal/nginx/sbin目录下执行
    3. ./nginx -s stop #停止nginx服务
    4. ./nginx -s reload #nginx热部署,更新配置资源重载nginx

    4.此时输入进程查询命令,可以看到Nginx已经启动

    ps -ef|grep nginx

    至此,我们在linux环境下的Nginx安装成功!!

    二、Nginx实战实例——反向代理

     关于反向代理的概念,我们在上一篇文章中已经进行了详细的介绍,接下来我们就使用Nginx完成反向代理。

    实现效果:在浏览器访问www.666.com能够直接跳转到ip:8080

    1.环境准备

    上文中的Nginx环境
    tomcat环境

    由于篇幅原因,上文中的tomcat就不带着大家配置啦,大家可以在网上查找tomcat的安装教程自行进行安装~

    2.启动一个tomcat并测试

    进入tomcat解压缩目录的bin,输入以下命令启动tomcat

    ./startup.sh
    

    在浏览器地址栏输入ip:8080测试tomcat是否启动成功

     如若出现上图中无法访问的功能,可能是防火墙未关闭,我们可以查看防火墙的状态并关闭防火墙:

    1. systemctl status firewalld #查看防火墙状态
    2. systemctl stop firewalld #关闭防火墙

    再次访问ip:8080,访问成功

     3.在host文件中配置映射

    进入windows系统中C:\Windows\System32\drivers\etc目录,对host文件进行修改

    在最下面一行添加www.666.comip:8080的映射

     4.在 nginx.conf 配置文件中增加如下配置

    修改 usr/local/nginx/conf目录中的nginx.conf文件

    vi /usr/local/nginx/conf/nginx.conf 

    按下图所示修改配置后wq保存退出 

     上图配置中:

    • listen: 表示我们检测80端口
    • server_name: 访问域名为 www.123.com
    • proxy_pass:代理转发模块,主要功能是把请求转发到其它服务,即将www.123.com的请求转发到http://192.168.137:8080;

    配置完成后,进入/usr/local/nginx/sbin目录重加载Nginx

    ./nginx -s reload   #重加载Nginx

     5.测试

    在浏览器地址栏中输入www.666.com

    如上图所示即使用Nginx实现反向代理成功!!  

    三、Nginx实战实例——负载均衡

     在实现了上文的反向代理实例后,我们继续进阶,在反向代理的知识基础上使用Nginx实现负载均衡。

    实现效果:启动两台服务器,在tomcat中分别放置两个内容不同的网页资源test.html,在浏览器中输入ip/test/test.html时,将请求均衡到端口为80808081的服务器中,实现负载均衡。

    1.环境准备

    准备两个页面,均命名为test.html,内容分别如下:

    1. <html>
    2. <head>head>
    3. <body>
    4. welcome to service 8080
    5. body>
    6. html>
    1. <html>
    2. <head>head>
    3. <body>
    4. welcome to service 8081
    5. body>
    6. html>

    将上文中的apache解压缩包重命名为apache8080

    mv apache-tomcat-7.0.70 apache8080
    

    进入Webapps目录并创建一个新的test文件夹

    1. cd webapps
    2. mkdir test

    内容为8080的test.html传入test文件夹中

    重新解压一个新的apache压缩包并命名为apache8081,步骤与上文中一致

    进入conf 目录中修改server.xml

    按下图所示修改配置后wq保存退出 

    然后重复上图中的步骤,进入webapps、新建一个test文件夹、将内容为8081的test.html传入test文件夹中 

    然后分别进入apache8080、apache8081的bin目录中,启动tomcat

    1. ./shutdown.sh #停止tomcat服务
    2. ./startup.sh #启动tomcat服务

    访问ip:8080/test/test.html,出现如下图所示页面

     apache8081也是同样的操作

    2.在 nginx.conf 配置文件中增加如下配置

    修改 usr/local/nginx/conf目录中的nginx.conf文件

    vi /usr/local/nginx/conf/nginx.conf 

    按下图所示修改配置后wq保存退出 

    置完成后,进入/usr/local/nginx/sbin目录重加载Nginx

    ./nginx -s reload   #重加载Nginx

     3.测试

    在浏览器地址栏中输入www.666.com/test/test.html

    访问后结果如下所示,刷新页面,会发现页面内容在8080和8081中进行切换,即实现了将请求分发给两个服务器,实现了负载均衡:

     至此,使用Nginx实现负载均衡成功!!  

    四、Nginx实战实例——动静分离

     我们继续学习Nginx的下一个应用场景——动静分离。截止到现在,我们上文中的所有请求都是在动态服务器上完成的,因此,为了能够实现动态分离,我们便通过Nginx对静态资源的访问进行配置。

    实现效果:

    在根目录下创建一个文件夹data,在里面放置静态资源文件,然后通过配置实现对data目录下静态资源的访问。

     1.环境准备

    在虚拟机跟目录下创建一个文件夹data,在data文件夹下创建两个文件夹,分别为html、image

     

     将一个网页资源test.html放置进html文件夹

     将一张图片1.png放置进image文件夹

    2.在 nginx.conf 配置文件中增加如下配置

     配置完成后,进入/usr/local/nginx/sbin目录重加载Nginx

    ./nginx -s reload   #重加载Nginx

    3.测试

     在浏览器地址栏中分别输入 

    http://www.666.com/html/test.html

    http://www.666.com/image/1.png

    若结果如下图所示即动静分离实现成功

     

      至此,使用Nginx实现动静分离成功!!

    五、Nginx实战实例——搭建高可用集群

    这是我们上一篇文章中没有提到的内容,在这里,我们对Nginx高可用集群做出解释:

    在进行实战教学之前,我们先来了解什么是高可用性:

    “高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。Nginx于Keepalived可以实现高可用,实现双机热备+自动切换,这种操作在现在的集群系统中。

    人话:

    在只有nginx服务器在工作的时候,一旦这台服务器发生宕机,就会导致整个系统发生故障,造成数据的丢失。为了保证整个系统的可用性,于是我们增加了一台nginx备用机,也称为从机,一旦nginx主机宕机,从机就会接替他的任务继续工作,大大的提高了整个系统的可用性。

    现在我们正式开始搭建Nginx集群 

     1.环境准备

    keepalived环境
    两台Nginx服务器
    定义一个虚拟IP

    首先,我们在原本的基础上,将原本的Nginx服务器进行克隆,得出第二台Nginx服务器。

     开启两台服务器并使用Xshell进行连接。

    接下来使用在两台服务器使用下面的命令安装keepalived

    yum install keepalived –y

    安装完成后,我们可以在/etc/目录下看见生成了一个目录keepalived,目录中有一个keepalived.conf文件

    2.对主从服务器的keepalived.conf 配置文件进行修改

    主机:192.168.17.137

    修改etc/keepalived目录下的keepalived.conf:

    其中最底层的(192.168.154.50即为虚拟IP)

    1. global_defs {
    2. notification_email {
    3. acassen@firewall.loc
    4. failover@firewall.loc
    5. sysadmin@firewall.loc
    6. }
    7. notification_email_from Alexandre.Cassen@firewall.loc
    8. smtp_server 192.168.154.137
    9. smtp_connect_timeout 30
    10. router_id LVS_DEVEL
    11. }
    12. vrrp_script chk_http_port {
    13. script "/usr/local/src/nginx_check.sh"
    14. interval 2 #(检测脚本执行的间隔)
    15. weight -2
    16. }
    17. vrrp_instance VI_1 {
    18. state MASTER # 备份服务器上将 MASTER 改为 BACKUP
    19. interface ens33 //网卡
    20. virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
    21. priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
    22. advert_int 1
    23. authentication {
    24. auth_type PASS
    25. auth_pass 1111
    26. }
    27. virtual_ipaddress {
    28. 192.168.154.99 // VRRP H 虚拟地址
    29. } }

    从机:192.168.17.147

    修改etc/keepalived目录下的keepalived.conf:

    其中最底层的(192.168.154.50即为虚拟IP)

    从机的keepalived.conf配置文件只需将主机的keepalived.conf文件的基础上将下图中的state修改成BACKUP即可。

    3.添加检测脚本

    分别在两台服务器的/usr/local/src 添加检测脚本nginx_check.sh(新建一个文件存进去)

    1. #!/bin/bash
    2. A=`ps -C nginx –no-header |wc -l`
    3. if [ $A -eq 0 ];then
    4. /usr/local/nginx/sbin/nginx
    5. sleep 2
    6. if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    7. killall keepalived
    8. fi
    9. fi

    添加完成后,启动两台服务器上的nginxkeepalived 

    1. ./nginx #sbin目录下启动nginx
    2. systemctl start keepalived.service #启动keepalived服务

    4.测试

    访问:http://192.168.154.99/,结果如下图所示

     然后我们关闭掉主机的nginxkeepalived

    1. ./nginx -s stop #在sbin目录下关闭nginx服务
    2. systemctl stop keepalived.service #关闭keepalived服务
    3. systemctl satus keepalived.service #查看keepalived服务状态

     再次访问:http://192.168.154.99/,结果如下所示

     说明在主机宕机后,从机接替了主机的工作,保证了系统的高可用性。

      至此,使用Nginx搭建高可用集群成功!!

    六、实战过程中遇到的问题

         在学习过程中,所遇到的问题都是因为不够细心而导致的配置、脚本编写错误,但是在除了这些问题之外,学习过程中还是有很多值得分享的问题,我在这里分享给大家~

    1.防火墙问题

      在进行外网访问时,如果发现出现无法访问的状态,可能是防火墙的问题,大家在查找问题的时候可以先关注一下是否防火墙已经关闭或者是否防火墙有开放服务的端口。

    2.配置目录问题

     遇到这种问题,一般是两种情况: 

    第一种:nginx.conf的nginx.pid被注释掉了

    解决方案:将pid改成正确的路径并取消注释

    第二种:没有指定配置目录

    解决方案:

    sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    

     3.location优先级问题

    当设置了多个location时,要注意location之间的优先级顺序,否则就会很容易出现访问错误的问题。


    总结

       相信看到这里的你,已经掌握了Nginx这门技术。希望你通过这个教程的学习,能够有所收获。如果还有不理解的地方,欢迎在评论区留下评论,也可以私信博主与博主进行技术层面的交流~

      那么,此次的深入浅出Nginx系列的教学到此结束~


  • 相关阅读:
    RabbitMQ-发布/订阅模式
    爬虫学习的一个综合案例——访问网站
    设计模式(19)命令模式
    Vulnhub实战-DC9
    【面试题】2023知乎暑期实习算法实习生(LLM方向)面经
    监控平台SkyWalking9入门实践
    CakePHP 3.x/4.x反序列化RCE链
    掌握 Postman 监控功能:自动化测试与性能监控的秘诀
    用色彩活出彩,能率Color Run上海之旅圆满结束
    U盘上删除的文件怎么恢复?教你一招轻松恢复数据
  • 原文地址:https://blog.csdn.net/weixin_47025166/article/details/126047843