nginx

1.nginx基本概念
 (1)nginx是什么,做什么事情
  (2) 反向代理
  (3)负载均衡
  (4)动静分离
  
2.nginx安装,常用命令和配置文件
(1)在linux系统中安装nginx
(2)nginx常用命令
(3)nginx配置文件

3.nginx配置实例1-反向代理

4.nginx配置实例2-负载均衡

5.nginx配置实例3-动静分离

6.nginx配置高可用集群

7.nginx原理

nginx概念

1.什么是nginx
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,

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

  • 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUEdVf5Q-1634398324255)(file://C:/Users/%E9%99%88/AppData/Roaming/Typora/typora-user-images/image-20211005092638711.png?lastModify=1633397263)]

(2)反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1wtmzb0N-1634398324258)(C:\Users\陈\AppData\Roaming\Typora\typora-user-images\image-20211005093749509.png)]

3.负载均衡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-joro9CUA-1634398324260)(C:\Users\陈\AppData\Roaming\Typora\typora-user-images\image-20211005162112197.png)]

4.动静分离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2kg8wCvB-1634398324262)(C:\Users\陈\AppData\Roaming\Typora\typora-user-images\image-20211005163113672.png)]

nginx的安装

1.使用远程工具连接linux操作系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SHAVvb2-1634398324262)(C:\Users\陈\AppData\Roaming\Typora\typora-user-images\image-20211005170041235.png)]

nginx编译安装
useradd -r nginx
yum groupinstall "Development Tools"
yum -y install epel-release.noarch
yum -y install openssl-devel
yum -y install gd-devel
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/data/logs/nginx/error.log --http-log-path=/data/logs/nginx/access.log --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-http_stub_status_module
make && make install
2.yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

3.安装nginx

tar xvf nginx-1.20.1.tar.gz   #解压缩

./configure   #进入解压缩目录,执行./configure

make && make install   

安装成功后,在usr多出一个文件夹local/nginx,在nginx有sbin有启动的脚本
[root@os7 sbin]# pwd
/usr/local/nginx/sbin
[root@os7 sbin]# ./nginx 
[root@os7 sbin]# ps aux | grep nginx
root      7259  0.0  0.0  20572   612 ?        Ss   18:17   0:00 nginx: master process ./nginx
nobody    7260  0.0  0.0  21016  1548 ?        S    18:17   0:00 nginx: worker process
root      7318  0.0  0.0 112812   976 pts/1    R+   18:21   0:00 grep --color=auto nginx
root      9444  0.0  0.0   4228     8 ?        Ss   Sep17   0:00 runsv nginx
root      9454  0.0  0.0   4372     0 ?        S    Sep17   0:00 svlogd -tt /var/log/gitlab/nginx

查看防火墙开放的端口
firewall-cmd --list-all

设置开放的端口
firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=80/tcp --permanent

重启防火墙
firewall-cmd --reload

./nginx   #启动 
./nginx -v  #查看版本号
./nginx -s stop   #停止nginx
./nginx -s reload  #重新启动

nginx配置文件

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

2.nginx配置文件组成
(1)nginx配置文件有三部分组成
第一部分 全局块
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令
比如 worker_processes  1; #值越大,可以支持的并发处理也越多


第二部分 events
events块涉及的指令主要影响nginx服务器与用户的网络连接
比如    worker_connections  1024; 支持的最大连接数
 

第三部分 http块
nginx服务器配置中最频繁的部分
http 块也可以包括http全局块、server块

Nginx配置实例-方向代理

1.实现效果
(1)打开浏览器,在浏览器地址栏输入地址www.123.com,跳转到linux系统tomcat主页面中

2.准备工作
(1)在linux系统安装tomcat,使用默认端口8080
tomcat安装文件放到linux系统中,解压
tar xvf apache-tomcat-10.0.12.tar.gz 
进入tomcat的bin目录中,./startup.sh启动tomcat服务器
cd apache-tomcat-10.0.12/bin/

(2)对外开放服务的端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

查看已经开放的端口号
firewall-cmd --list-all

(3)在windows系统中通过浏览器访问tomcat服务器
http://192.168.4.23:8080/

3.访问过程的分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KXzTSGUE-1634398324263)(nginx.assets/image-20211007213410540.png)]

4.具体配置

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

“C:\Windows\System32\drivers\etc\hosts”

192.168.4.23 www.123.com

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

server {
    listen       81;
    server_name  192.168.4.23;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        proxy_pass http://127.0.0.1:8080;
        index  index.html index.htm;
    }

访问http://www.123.com:81/

nginx配置实例-反向代理实例2

1.实现效果

使用nginx反向代理,根据访问的路径跳转到不同端口的服务中

​ nginx监听端口为9001

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

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

2.准备工作

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

cd /usr/src

(2)创建两个目录和测试页面

mkdir tomcat8080

mkdir tomcat8081

tar xvf apache-tomcat-10.0.12.tar.gz 

修改配置server.xml文件

/usr/src/tomcat8081/apache-tomcat-10.0.12/conf/server.xml 

<Server port="8015" shutdown="SHUTDOWN">   #改成8015

​    <Connector port="8081" protocol="HTTP/1.1"    #改成8081

<Connector protocol="AJP/1.3"
               address="::1"
               port="8019"   #改成8019



mkdir edu

cd edu/

touch a.html

[root@zbx-agent1 edu]# cat a.html 
<h1>8081!!!</h1>
[root@zbx-agent1 webapps]# pwd
/usr/src/tomcat8080/apache-tomcat-10.0.12/webapps
[root@zbx-agent1 webapps]# mkdir vod
[root@zbx-agent1 webapps]# cd vod/
[root@zbx-agent1 vod]# touch a.html
[root@zbx-agent1 vod]# cat a.html 
<h1>8080!!!</h1>

浏览器浏览http://192.168.4.170:8081/edu/a.html

3.具体配置

(1)找到nginx配置文件,进行反向代理配置

 server {
        listen       9001;
        server_name  192.168.4.23;

        location ~ /edu/ {
                proxy_pass http://192.168.4.170:8080;
        }
        location ~ /vod/ {
                proxy_pass http://192.168.4.170:8081;
        }
    }

(2)开放对外访问的端口号9001 8080 8081

4.最终测试

(1)访问http://192.168.4.170:8080/edu/a.html
8080!!
http://192.168.4.23:9001/vod/a.html
8081!!

location指令说明

该指令用于匹配url

location [ = | ~ | * | ^~ ] uri {

}

1.=:用于不包含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

2.~:用于表示uri包含正则表达式,并且区分大小写。

3.~*:用于表示uri包含正则表达式,并且不区分大小写。

4.^~:用于不包含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

注意:如果uri包含正则表达式,则必须要有或者*标识。

nginx配置实例-负载均衡

1.实现效果

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

2.准备工作
(1)准备两台tomcat服务器,一台8080,一台8081
(2)在两台tomcat里面webapps目录中,创建名称是edu文件夹,在文件夹中创建页面a.html,用于测试

3.在nginx的配置文件中进行负载均衡的配置
 upstream myserver {
        server 192.168.4.170:8080;
        server 192.168.4.170:8081;
        }
        
 server {
        listen       81;
        server_name  192.168.4.23;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            proxy_pass http://myserver;
            index  index.html index.htm;
        }

4.nginx分配服务器策略
第一种 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除

第二种 weight 权重
weight代表权重默认为1,权重越高被分配的客户端就越多
upstream myserver {
        server 192.168.4.170:8080 weight=5;
        server 192.168.4.170:8081 weight=10;
        }
[root@os7 sbin]# curl http://192.168.4.23:81/edu/a.html
<h1>8081!!</h1>
[root@os7 sbin]# curl http://192.168.4.23:81/edu/a.html
<h1>8081!!</h1>
[root@os7 sbin]# curl http://192.168.4.23:81/edu/a.html
<h1>8080!!</h1>
[root@os7 sbin]# curl http://192.168.4.23:81/edu/a.html
<h1>8081!!</h1>

第三种 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。例如
upstream server_pool {
ip_hash
server 192.168.4.170:80
server 192.168.4.171:80
}

第四种 fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream server_pool {
server 192.168.4.170:80
server 129.168.4.171:80
fair
}

nginx配置实例-动静分离

1.什么是动静分离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x67EsPEc-1634398324264)(nginx.assets/image-20211010163446465.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4YrdYiT8-1634398324264)(nginx.assets/image-20211010170157881.png)]

2.准备工作

(1)在linux系统中准备静态资源,用于进行访问

mkdir /data/www -pv
mkdir /data/image
touch a.html
<h1>test html</h1>

3.具体配置

(1)在nginx配置文件中进行

 server {
        listen       81;
        server_name  192.168.4.23;

location /www/ {
           root    /data/;
           index  index.html index.htm;
        }
        location /image/ {
           root    /data/;
           autoindex  on;
        }

浏览器输入http://192.168.4.23:81/image/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vyBQtzue-1634398324265)(nginx.assets/image-20211011000623529.png)]

在浏览器地址输入http://192.168.4.23:81/www/a.html

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-45BO8Rps-1634398324266)(nginx.assets/image-20211011000928853.png)]

nginx配置高可用的集群

1.什么是nginx高可用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4mFTlzkM-1634398324267)(nginx.assets/image-20211011002803085.png)]

(1)需要两台nginx服务器

(2)需要keepalived

(3)需要虚拟ip

2.配置高可用的准备工作

(1)需要两台服务器192.168.4.23和192.168.12.162

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

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

3.在两台服务器安装keepalived

(1)使用yum命令进行安装

yum -y install keepalived

[root@os7 ~]# rpm -qa keepalived
keepalived-1.3.5-19.el7.x86_64

(2)安装后的配置文件/etc/keepalived/keepalived.conf

4.完成高可用配置(主从配置)

(1)修改/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.4.24
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

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

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

(2)在/usr/local/src/添加检测脚本
[root@zbx-agent2 ~]# cat nginx_check.sh
#!/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

(3)把两台服务器上nginx和keepalived启动
./nginx #启动
systemctl start keepalived
ps -ef | grep keepalived


5.最终测试
(1)在浏览器地址栏输入 虚拟ip地址 192.168.4.25

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrce7xTr-1634398324267)(nginx.assets/image-20211016212312872.png)]

(2)把主服务器(192.168.4.24)nginx和keepalived停止,再输入192.168.4.25

Nginx的原理

1.master和worker

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JjquiQ1i-1634398324268)(nginx.assets/image-20211016220829101.png)]

2.worker是如何工作的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKWCdBYJ-1634398324268)(nginx.assets/image-20211016220856514.png)]

3.一个master和多个worker有哪些好处

(1)可以使用nginx -s reload 热部署,利于nginx进行热部署操作

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

4.设置多少个worker合适

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

5.连接数worker_connections

第一个:发送请求,占用了worker的几个连接数?

答案:2个或者4个

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

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

入192.168.4.25

Nginx的原理

1.master和worker

[外链图片转存中…(img-JjquiQ1i-1634398324268)]

2.worker是如何工作的

[外链图片转存中…(img-VKWCdBYJ-1634398324268)]

3.一个master和多个worker有哪些好处

(1)可以使用nginx -s reload 热部署,利于nginx进行热部署操作

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

4.设置多少个worker合适

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

5.连接数worker_connections

第一个:发送请求,占用了worker的几个连接数?

答案:2个或者4个

第二个:nginx有一个master,有四个worker,每个worker支持最大的连接数据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、付费专栏及课程。

余额充值