nginx介绍&&linux下安装nginx&&配置虚拟主机&&反向代理&&负载均衡&&高可用

nginx

什么是nginx

Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 相对而言,tomcat只能支撑500个并发

应用场景

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以访问静态资源,比如图片、CSS、js、静态页面等。可以做网页静态服务器
  2. 虚拟主机。可以实现在一台服务器跑多个网站。让好多个网站共用一个端口,用域名来区分不同的网站。例如个人网站使用的虚拟主机
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高而某台服务器闲置或者宕机的情况

要求的linux安装环境

  1. gcc
    nginx是C语言开发,安装nginx时需要将官网下载的源码进行编译,而编译依赖gcc环境,如果没有gcc环境,需要安装gcc。在联网情况下,直接在Linux中输入下面命令nginx是C语言开发,安装nginx时需要将官网下载的源码进行编译,而编译依赖gcc环境,如果没有gcc环境,需要安装gcc。在联网情况下,直接在Linux中输入下面命令
yum install gcc-c++ 

在这里插入图片描述
在要求输入y/n的时候输入y,继续下载

  1. PCRE
    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库
    注:pcre-devel是使用pcre开发的一个二次开发库
    nginx也需要此库在联网情况下,直接在Linux中输入下面命令
yum install -y pcre pcre-devel
  1. zlib
    zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。在联网情况下,直接在Linux中输入下面命令
yum install -y zlib zlib-devel
  1. OpenSSL
    OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。在联网情况下,直接在Linux中输入下面命令
yum install -y openssl openssl-devel

nginx正式安装

  1. 官方网站:http://nginx.org/ 使用的版本是1.8.0版本
    在这里插入图片描述

  2. 将nginx-1.8.0.tar.gz拷贝至linux服务器的root文件夹下,解压

tar -vzxf nginx-1.8.0.tar.gz 
  1. 在nginx文件夹下,使用configure命令创建makeFile文件,输入下列命令
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
  1. 执行make命令进行编译
  2. 执行make install命令
  3. 在/usr/local/nginx/sbin目录下创建/var/temp/nginx目录
mkdir /var/temp/nginx/ -p
  1. 进入sbin目录启动nginx,输入./nginx
    [root@localhost sbin]# ./nginx

  2. 查看nginx进程,确保已经启动 ps aux | grep nginx,必须要有两个进程才算成功
    在这里插入图片描述

  3. 关闭nginx
    [root@localhost sbin]# ./nginx -s quit
    在这里插入图片描述

  4. 开启的状态下,修改配置文件后,想要刷新配置文件不需要关闭再开启nginx,修改后输入下面的命令

[root@localhost sbin]# ./nginx -s reload
  1. 页面直接访问nginx
    在这里插入图片描述

  2. 注意关闭防火墙
    默认是80端口,如果不关闭防火墙,80端口会被屏蔽,在外边就访问不了,关了之后外边就可以访问nginx了
    本次开机中关闭防火墙,下次开机还会拉起来
    永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
    即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop

配置虚拟主机

就是在一台服务器启动多个网站
如何区分不同的网站:
1、域名不同
2、端口不同

80端口和8080端口是两种不同的端口

80端口是为HTTP开放的,此为上网冲浪使用次数最多的协议,主要用于WWW传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80”了
www.baidu.com:80=www.baidu.com
8080端口:在代理服务器的时候,会加上“:8080”端口号,另外Apache Tomcat web server安装后,默认的服务端口就是8080

通过端口区分不同的虚拟主机

目的:通过同一个IP的不同端口实现访问不同的网站
比如:192.168.147.130:80 ,192.168.147.130:81

  1. usr的local目录的nginx目录下conf目录下有个nginx.conf文件,复制80端口的代码,新增为81的代码
    在这里插入图片描述

  2. nginx目录下复制html文件,命名为html81,html81文件中的index.html文件修改标志是81
    在这里插入图片描述

  3. 刷新配置

[root@localhost sbin]# ./nginx -s reload
  1. 结果
    在这里插入图片描述

在这里插入图片描述

通过域名区分不同的虚拟主机

  • 目的:上面通过同一个IP的不同端口(80和81)实现访问不同的网站,这样依然没有达到目的。最好的方式是通过同一个IP的同一个端口来实现访问不同的网站
  • 域名就是网站,比如:www.baidu.comwww.taobao.com
  • DNS服务器:把域名解析为ip地址。保存的就是域名和ip的映射关系
  • 一台服务器对应一个IP,一个域名对应一个IP,多个域名可以绑定到一个公共IP上
  • 本地测试可以修改hosts文件,改文件可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,优先此文件的配置而不走DNS服务器了
  • 修改window的hosts文件:(C:\Windows\System32\drivers\etc)
  • 也可以使用软件SwitchHosts.exe,可以配置IP和域名,但是不能配置端口号
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

反向代理

  1. 正向代理
    在这里插入图片描述

  2. 反向代理:只有一台服务器,那么只有一个公共IP,现在有多个网站(域名)绑定在这个公共IP上,都是使用80端口,tomcat的端口不同(8080和8081),那么问题来了,当输入www.sohu.com这个域名时该访问 哪个tomcat?此时,就需要一个反向代理服务器,由nginx反向代理服务器来决定由哪台tomcat服务器提供响应服务
    在这里插入图片描述

nginx实现反向代理

前期准备:在192.168.25.148这个服务器上安装两个tomcat,配置它们的端口,一个为8080,一个为8081
(注:这种方式是伪集群,真集群是指一个IP服务器上安装一个tomcat,有多个这样的IP组成,每个tomcat功能一样)
实现过程输入www.sohu.com实际是www.sohu.com:80)这个域名,请求来时,先到nginx,它监听的是80端口,判断访问的是sohu.com,然后会将请求转发给proxy_pass http://sohu,对应upstream sohu,里面有个server节点(应用服务器)192.168.25.148,节点把请求转发给8081这个tomcat,8081这个tomcat接收这个请求,然后把响应再传给nginx,nginx最终把响应传给浏览器
下面是nginx的nginx.conf配置文件
在这里插入图片描述

nginx实现负载均衡

如果一个服务由多个tomcat提供,同一个服务器部署多个功能相同的tomcat,需要把负载分配到不同的tomcat处理,需要负载均衡
新浪在192.168.25.148中不可能只有一个tomcat,会有多个。比如现在有两个,一个8081端口,一个8082端口,提供同样的服务,此时问题来了,如何让两个tomcat同时实现nginx反向代理?

  1. 默认8081和8082请求来时,访问8081和8082tomcat一人一次很均匀
    upstream tomcat2 {
    server 192.168.25.148:8081;
    server 192.168.25.148:8082;
    }
  2. 可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1
    upstream tomcat2 {
    server 192.168.25.148:8081;
    server 192.168.25.148:8082 weight=2;
    }
    在这里插入图片描述

nginx实现高可用

  • 使用nginx做反向代理和负载均衡,那么网站的入口就是nginx,如果只配置了一个nginx服务器,有天那台nginx服务器挂了,那么后面的tomcat服务器也是不能访问的
  • 能不能配置nginx集群?答案是不能的,∵入口只有一个
  • 为了防止负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,主服务器向备份服务器通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份服务器又从主服务器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务

keepalived+nginx实现高可用

  • keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障
  • Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值