Nginx

写在前面:

终于终于终于把以前想学习想了解的Nginx给搞定了。之前看招聘大部分招聘上写着要求面试者会Nginx,所以对Nginx一直很好奇,想看看这玩意到底是干啥的。其实,在工作中也一点点在接触到了Nginx,不能说完全一窍不通,但或多或少大概知道它是怎么一回事。例如,耳熟能详的负载均衡,反向代理,高性能http服务器等等。我真正认识nginx,是实际工作中项目部署在测试环境时,F12查看前端页面调用后端接口时,发现怎么接口的url的ip地址是完全新的,不是我们某个后端开发人员的ip地址。后来一打听,哦,原来是访问的Nginx提供的ip和端口,nginx里面做了反向代理。嗖嘚斯内~原来如此。这更大大加深了我对nginx的好奇,所以很迫不及待的点开了尚硅谷-Nginx教程打算一探究竟。老样子 献上学习地址

https://www.bilibili.com/video/BV1zJ411w7SVfrom=search&seid=14651464258035726827

百度网盘课程资料-链接:https://pan.baidu.com/s/1IKEzmMnO7oY1YHPiiyjk9A 提取码:xmsp

Nginx目录

一、Nginx基本概念

1.什么是 nginx 、可以做什么事情?

Nginx 是高性能的 HTTP 和反向代理的服务器,占有内存少,并发能力强,专为性能优化而开发。

2.反向代理(正向代理)

正向代理:在客户端(浏览器)配置代理服务器

反向代理:暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。

①反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。

②我们只需要将请求发送到反向代理服务器,由它去选择目标服务器,获取数据后,再返回给客户端。此时,反向代理服务器和目标服务器,整体对客户端来说,是一个服务器。

③暴露的是代理服务器地址,隐藏了真实服务器IP地址。

3.负载均衡

单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上。将原先请求集中到单个服务器的情况改为请求分发到多个服务器上。将负载分发到不同服务器。

4.动静分离

加快网站的解析速度,把动态页面和静态页面由不同服务器进行解析。

二、Nginx安装、常用命令和配置文件

1.在 linux 系统中安装 nginx

准备工作-打开虚拟机,使用远程连接工具连接 linux 操作系统。

①安装 pcre 依赖(/usr/src目录下)

  1. 将pcre-8.37.tat.gz利用Xftp工具复制到/usr/src目录下,并输入命令tar –zxvf pcre-8.37.tat.gz命令进行解压。

  2. 解压得到其文件夹,进入其文件夹,执行./configure命令

  3. 紧接着再输入命令make && makeinstall命令进行安装

②安装openssl、zlib、gcc 依赖(/usr/src/pcre-8.37目录下)

  1. 在刚进入解压后的目录里(/usr/src/pcre-8.37)目录里执行yum -y install make zlib zlib-devel gcc-c++ libtool opensslopenssl-devel

③安装nginx(/usr/src目录下)

  1. 将nginx-1.12.2.tar.gz同样利用Xftp工具复制到/usr/src目录下,并对其进行解压。

  2. 进入nginx-1.12.2中,执行./configure命令

  3. 紧接着同样再输入命令make && makeinstall命令进行安装

安装成功后,在/src中会多出/loca/nginx文件夹,在nginx文件夹中有sbin启动脚本。

2.nginx常用命令

进入 nginx 目录中 cd /usr/local/nginx/sbin

  1. 查看nginx版本号 ./nginx -v

  2. 启动nginx服务 ./nginx

  3. 关闭nginx服务 ./nginx –s stop

  4. 重新加载nginx服务 ./nginx –s reload

3.nginx配置文件

nginx 配置文件位置 /usr/local/nginx/conf nginx.conf

主要包括3部分内容

1.全局块配置服务器整体运行的配置指令

比如 worker_processes 1;处理并发数的配置。值越大,并发处理量也越多。

2. events块:主要影响Nginx服务器与用户的网络连接

比如 worker_connections 1024; 支持的最大连接数为 1024

3. http块:配置最频繁

又分为--http全局块:文件引入,MIME-TYPE定义,日志自定义

又分为--若干个server块

【server块又分为--全局server块(本虚拟机监听配置或主机名称或IP配置)

又分为--若干个location块(对虚拟主机名称之外字符串进行匹配和转发)】

打开nginx配置文件nginx.conf,默认开启了80端口。Ps:我这里之前已经做了反向代理到tomcat主页上了。外网浏览器上输入虚拟机ip地址 应该也能看到tomcat主页。前提给防火墙关闭了。service iptables stop

三、Nginx 配置实例 1 反向代理

1.准备工作:安装tomcat和jdk

①安装tomcat:

将apache-tomcat-7.0.70.tar.gz复制到/usr/src目录下,进行解压,得到tomcat。进入其conf目录下可以操作server.xml文件,对其端口进行修改。默认端口8080。这里就不先去改它了。

去/usr/src/apache-tomcat-7.0.70/bin下执行 ./startup.sh启动tomcat

②安装jdk:

1.查看yum中管理的可用的JDK软件包列表:yum search java | grep -i --colorJDK。

2.选择合适版本,安装jdk:yum install java-1.8.0-openjdk-devel.x86_64。

3.出现如下显示时输入y,进行安装

 配置环境变量,打开etc文件下profile。在最下面输入 安装的jdk路径。

exportJAVA_HOME=/usr/lib/jvm/java-1.8.0
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

保存关闭后,执行 source /etc/profile让配置生效。

*查看jdk安装路径

2.实现效果1

打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中。

3.实现步骤

第一步 在 windows 系统的 host 文件进行域名和 ip 对应关系的配置

C:\Windows\System32\drivers\etc添加 192.168.91.130 www.123.com

第二步 在Linux系统中,关闭防火墙service iptables stop,并启动tomcat

第三步 在nginx进行请求转发的配置(反向代理配置)

第四步 在windows浏览器上输入www.123.com进行测试

4.分析

由于在windows中进行了hosts配置。将www.123.com转发到了访问虚拟机ip192.168.91.130地址上,在nginx配置中,监听了80端口,所以默认不用输入端口号就可以访问虚拟机上的ip地址,也由于事先关闭了防火墙和启动了tomcat。因而能将发送过来的请求转发到了虚拟机上的tomcat主页上。

5.实现效果2

根据访问的路径,跳转到不同端口的服务。

访问http://192.168.17.129:9001/edu/ 直接跳转到 127.0.0.1:8080

访问 http://192.168.17.129:9001/vod/ 直接跳转到 127.0.0.1:8081

准备两个tomcat 服务器,一个 8080 端口,一个 8081 端口

将其中一个tomcat的端口,修改为8081。另外端口也和tomcat8080加以区分。

各自tomcat下,webapps下各自新建文件夹edu和vod,各自放入8080.html和8081.html。然后在nginx配置文件中进行路径配置。

然后,在浏览器进行测试。根据不同访问路径访问到了不同页面。

6.location指令:

=与url严格匹配

~区分大小写

~*不区分大小写

^~和请求字符串匹配度最高的location

四、Nginx 配置实例 2 负载均衡

之前,我们说到,负载均衡含义。是增加服务器的数量,然后将请求分发到各个服务器上。将原先请求集中到单个服务器的情况改为请求分发到多个服务器上。将负载分发到不同服务器。

1.实现效果

浏览器地址栏输入地址 http://192.168.91.130/edu/a.html,负载均衡效果,平均 8080和 8081 端口中。

 2.实现步骤

①准备两台 tomcat 服务器,一台 8080,一台 8081。各自webapp下新建edu文件夹并各自都新建一个a.html。里面内容根据端口号设置分别为8080和8081。

②在nginx的配置文件中进行负载均衡的配置。

③在浏览器中输入http://192.168.91.130:99/edu/a.html进行测试。访问多次可以看到,每次请求都指向了不同tomcat里的a.html。

3.nginx 分配服务器策略

第一种 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

第二种weight

weight 代表权重默认为 1,权重越高被分配的客户端越多。

第三种ip_hash

每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。

第四种fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

五、Nginx 配置实例 3 动静分离

1.实现效果

①通过 location 指定不同的后缀名实现不同的请求转发。

②通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。

2.实现步骤

①在linux系统中准备静态资源,用于进行访问。image中放入AAAAA.png静态资源。www中放入动态资源a.html。

②在nginx中进行配置。

autoindexon //列出目录下所有文件。

root//根目录

浏览器中输入地址访问静态资源 http://192.168.91.130:33/image/AAAAA.png

浏览器中输入地址访问动态资源 http://192.168.91.130:33/www/a.html

六、Nginx 的高可用集群

假如一台Nginx(主机)挂了,另一台Nginx(备机)能接上。

1.准备工作

(1)需要两台服务器 192.168.91.130和 192.168.91.131

(2)在两台服务器安装 nginx

(3)在两台服务器安装keepalived

2.安装keepalived

使用 yum 命令进行安装 yum installkeepalived –y

安装之后,在etc 里面生成目录keepalived有文件keepalived.conf

修改/etc/keepalived/keepalived.conf配置文件

global_defs {
 notification_email {
 acassen@firewall.loc
 failover@firewall.loc
 sysadmin@firewall.loc
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.91.130 
 smtp_connect_timeout 30
 router_id LVS_DEVEL #记得去/etc/hosts下添加 127.0.0.1 LVS_DEVEL
}


vrrp_script chk_http_port {
 script "/usr/local/src/nginx_check.sh"
 interval 2 #(检测脚本执行的间隔)
 weight 2
}


vrrp_instance VI_1 {
 state BACKUP # 备份服务器上将 MASTER 改为 BACKUP
 interface eth0 #网卡
 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.91.50 # VRRP H 虚拟地址
 }
}

global_defs{

       //全局变量设置

}

vrrp_scriptchk_http_port {

       //检测执行脚本

}

vrrp_instanceVI_1 {

       //虚拟Ip设置

}

******在/usr/local/src 添加检测脚本***********
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

把两台服务器上 nginx 和keepalived 启动

./nginx

servicekeepalived start

注: 记得去/etc/hosts下添加 127.0.0.1 LVS_DEVEL

3.测试

在浏览器中输入虚拟IP:192.168.91.50。看到直接去了我们主机的tomcat上。

此时,把主机Nginx停止了。看还能不能访问。

发现还是可以。但此时已经是跳到了备机上的tomcat主页了。

输入ip a。看到此ip已经绑定了我eth0网卡上了。

七、Nginx原理

1.mater 和 worker

 

2.一个master多个worker

3.一个master多个worker好处

(1)可以使用 nginx –sreload热部署,利用nginx进行热部署操作 [每个worker处理完后可继续执行]

(2)每个woker是独立的进程,如果有其中的一个woker出现问题,其他woker独立的, 继续进行争抢,实现请求过程,不会造成服务中断。

 4.worker工作方式

5.设置多少个 woker 合适

worker 数和服务器的cpu 数相等是最为适宜的

6.面试题

第一题:发送请求,占用了 woker 的几个连接数?答案:2 或者 4 个

访问静态资源 只需2个。若访问动态资源,例如tomcat,则需要4个,来回。

第二题:nginx 有一个master,有四个 woker,每个 woker 支持最大的连接数 1024,支持的 最大并发数是多少?

普通的静态访问最大并发数是:worker_connections *worker_processes /2

而如果是HTTP 作为反向代理来说,最大并发数量应该是 worker_connections *worker_processes/4。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值