目录:

(1)Nginx-静态代理

(2)Nginx-静态代理案例-静态资源后缀名拦截处理

(3)Nginx-静态代理案例-静态资源关键字拦截处理

(4)Nginx-动静分离案例

(5) Jmeter测试工具的介绍

(6)Nginx-虚拟主机

(7)Nginx-虚拟主机案例 


(1)Nginx-静态代理

把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长于静态资源的处理,性能更好,效率更高。

         所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。

        

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截

 Nginx静态代理实现方式:

方式一 在nginx.conf的location中配置静态资源的后缀

例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)

location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid
|doc|ppt|pdf|xls|mp3|wma)$ {
             root /opt/static;
}

说明

  • ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
  • 第一个点 . 表示任意字符
  • *表示一个或多个字符
  • \. 是转移字符,是后面这个点的转移字符
  • | 表示或者
  • $ 表示结尾

整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理

放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限;

否则会出现403错误 chmod 755

方式二 在nginx.conf的location中配置静态资源所在目录实现

例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)

location ~ .*/(css|js|img|image) {
             root   /opt/static;
}
         xxx/css
xxx/js
xxx/img
xxx/images

         我们将静态资源放入 /opt/static 目录下,然后用户访问时由nginx返回这些静态资源

(2)Nginx-静态代理案例-静态资源后缀名拦截处理

nginx 静态资源拦截 nginx过滤静态资源_学习_02

 

nginx 静态资源拦截 nginx过滤静态资源_nginx_03

nginx 静态资源拦截 nginx过滤静态资源_Nginx_04

重新复制一份配置文件:

nginx 静态资源拦截 nginx过滤静态资源_nginx_05

vim编辑:

nginx 静态资源拦截 nginx过滤静态资源_nginx_06

nginx 静态资源拦截 nginx过滤静态资源_Nginx_07

nginx 静态资源拦截 nginx过滤静态资源_运维_08

nginx 静态资源拦截 nginx过滤静态资源_Nginx_09

nginx 静态资源拦截 nginx过滤静态资源_nginx_10

 删除项目中的图片目录:

nginx 静态资源拦截 nginx过滤静态资源_nginx_11

nginx 静态资源拦截 nginx过滤静态资源_学习_12

此时没有重启配置,再次访问myweb图片找不到了 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_13

 关掉原来的nginx,重新启动更改后的nginx

nginx 静态资源拦截 nginx过滤静态资源_运维_14

 访问出现图片还是没有显示,出现这个问题:

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_15

 修改图片的权限:

nginx 静态资源拦截 nginx过滤静态资源_运维_16

 此时就可以正常访问了

nginx 静态资源拦截 nginx过滤静态资源_学习_17

(3)Nginx-静态代理案例-静态资源关键字拦截处理

编辑配置文件: 

nginx 静态资源拦截 nginx过滤静态资源_运维_18

 注释掉后缀名改换关键字匹配规则

nginx 静态资源拦截 nginx过滤静态资源_运维_19

nginx 静态资源拦截 nginx过滤静态资源_学习_20

 

nginx 静态资源拦截 nginx过滤静态资源_学习_21

(4)Nginx-动静分离案例

Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。

动态资源,如jsp由tomcat或其他web服务器完成

静态资源,如图片、css、js等由nginx服务器完成

它们各司其职,专注于做自己擅长的事情

动静分离充分利用了它们各自的优势,从而达到更高效合理的架构

架构图

nginx 静态资源拦截 nginx过滤静态资源_学习_22

整个架构中,一个nginx负责负载均衡,两个nginx负责静态代理。Nginx在一台Linux上安装一份,可以启动多个Nginx,每个Nginx的配置文件不一样即可

 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_23

复制一份nginx的配置文件: 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_24

 编辑:

nginx 静态资源拦截 nginx过滤静态资源_运维_25

nginx 静态资源拦截 nginx过滤静态资源_nginx_26

 把这个配置文件修改一下名字以便区分:80

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_27

nginx 静态资源拦截 nginx过滤静态资源_学习_28

重新复制两份:命名81、82

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_29

 

nginx 静态资源拦截 nginx过滤静态资源_nginx_30

 编辑81、82:

nginx 静态资源拦截 nginx过滤静态资源_运维_31

 

nginx 静态资源拦截 nginx过滤静态资源_运维_32

 修改:

nginx 静态资源拦截 nginx过滤静态资源_Nginx_33

 

nginx 静态资源拦截 nginx过滤静态资源_nginx_34

 

关闭现在的nginx,启动配置的nginx:

nginx 静态资源拦截 nginx过滤静态资源_Nginx_35

分别启动80、81、82 

nginx 静态资源拦截 nginx过滤静态资源_运维_36

  访问:即可实现负载均衡,看到的是冬天资源的负载均衡

nginx 静态资源拦截 nginx过滤静态资源_nginx_37

 

nginx 静态资源拦截 nginx过滤静态资源_学习_38

 因为两个都指向同一个图片,但是不知道静态资源是否实现负载均衡:可以指向不同的图片:

创建目录:static1、static2往里面存放图片

nginx 静态资源拦截 nginx过滤静态资源_nginx_39

由于创建时没有方对位置,然后可以可视化移动图片 

 分别往里面存放两张图片:图片不同

nginx 静态资源拦截 nginx过滤静态资源_Nginx_40

aa改名为001.jpg,移动到里面 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_41

 

 

修改nginx配置文件:81、82

nginx 静态资源拦截 nginx过滤静态资源_nginx_42

 

 static改为static1

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_43

 static改为static2

nginx 静态资源拦截 nginx过滤静态资源_运维_44

 关掉这两个nginx,重新启动:

nginx 静态资源拦截 nginx过滤静态资源_运维_45

启动:

nginx 静态资源拦截 nginx过滤静态资源_学习_46

  

nginx 静态资源拦截 nginx过滤静态资源_Nginx_47

nginx 静态资源拦截 nginx过滤静态资源_Nginx_48

 

(5) Jmeter测试工具的介绍

nginx 静态资源拦截 nginx过滤静态资源_nginx_49

它是测试使用,测试软件的一个测试工具,能够帮助我们进行并发量的测试。

解压,进入目录,找到启动文件:

nginx 静态资源拦截 nginx过滤静态资源_学习_50

 

双击启动: 

nginx 静态资源拦截 nginx过滤静态资源_学习_51

  

nginx 静态资源拦截 nginx过滤静态资源_nginx_52

可以添加线程组:

nginx 静态资源拦截 nginx过滤静态资源_nginx_53

 可以添加取样器:

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_54

 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_55

可以添加监听器:看执行结果 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_56

 

nginx 静态资源拦截 nginx过滤静态资源_学习_57

nginx 静态资源拦截 nginx过滤静态资源_学习_58

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_59

  

nginx 静态资源拦截 nginx过滤静态资源_Nginx_60

吞吐量:表示处理请求和响应的速度 ,当整体的环境,操作的组件越多,吞吐量必然后下降

可以设置工作进程数8:

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_61

修改80的配置文件:81、82主要是提供静态图片的,只更改80即可

nginx 静态资源拦截 nginx过滤静态资源_Nginx_62

   把1改为8:

nginx 静态资源拦截 nginx过滤静态资源_nginx_63

 重新启动:关闭原来的

nginx 静态资源拦截 nginx过滤静态资源_nginx_64

 

nginx 静态资源拦截 nginx过滤静态资源_运维_65

nginx 静态资源拦截 nginx过滤静态资源_nginx_66

重新测试启动:

通过性能调优,提高了吞吐量

nginx 静态资源拦截 nginx过滤静态资源_nginx_67

 

nginx 静态资源拦截 nginx过滤静态资源_运维_68

 

nginx 静态资源拦截 nginx过滤静态资源_运维_69

分别测试以下案例:

测试案例一:

关闭所有进程: 

nginx 静态资源拦截 nginx过滤静态资源_学习_70

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_71

 启动对应案例的配置文件:

nginx 静态资源拦截 nginx过滤静态资源_运维_72

启动: 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_73

 访问:

nginx 静态资源拦截 nginx过滤静态资源_学习_74

修改测试:改为/,点击运行

nginx 静态资源拦截 nginx过滤静态资源_Nginx_75

  吞吐量4500

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_76

 调优:工作进程数改为8

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_77

 重启启动:显示8个工作线程

nginx 静态资源拦截 nginx过滤静态资源_nginx_78

 4600:

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_79

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_80

 测试案例二:

关闭次nginx的进程 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_81

 启动:

nginx 静态资源拦截 nginx过滤静态资源_nginx_82

 访问:案例是把图片移动到别的地方

nginx 静态资源拦截 nginx过滤静态资源_运维_83

 修改测试路径:

nginx 静态资源拦截 nginx过滤静态资源_学习_84

 

 

 4100:

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_85

 

nginx 静态资源拦截 nginx过滤静态资源_学习_86

通过测试:可以测试以下自己的接口,看一下并发能力是怎样的,请求响应能力是怎样的 

(6)Nginx-虚拟主机

虚拟主机,就是把一台物理服务器划分成多个“虚拟”的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。

Nginx提供虚拟主机的功能,就是为了让我们不需要安装多个Nginx,就可以运行多个域名不同的网站。

Nginx下,一个server标签就是一个虚拟主机。nginx的虚拟主机就是通过nginx.conf中server节点指定的,想要设置多个虚拟主机,配置多个server节点即可;

         例如:com">www.meituan.com 切换城市,可以看到不同的城市地址不一样(二级域名)

比如一个公司有多个二级域名,没有必要为每个二级域名都提供一台Nginx服务器,就可以使用虚拟主机技术,在一台nginx服务器上,模拟多个虚拟服务器。

配置虚拟主机方式:

基于端口的虚拟主机(了解)

         基于端口的虚拟主机配置,使用端口来区分

         浏览器使用 同一个域名+端口 或 同一个ip地址+端口访问;

                  server {

    listen 8080;

                       server_name www.myweb.com;

                       location /myweb {

                     proxy_pass http://www.myweb.com;

                       }

}

                  server {

                       listen 9090;

                       server_name www.myweb.com;

                       location /p2p {

                       proxy_pass http://www.p2p.com;

                       }

}

基于域名的虚拟主机(掌握)

基于域名的虚拟主机是最常见的一种虚拟主机

         server {

        listen       80;

        server_name  www.myweb.com;

        location /myweb {

           proxy_pass http://www. myweb.com;

        }

}

         server {

        listen       80;

        server_name  www.p2p.com;

        location /myweb {

           proxy_pass http://www.p2p.com;

        }

}

         需要修改一下本地的hosts文件,文件位置:C:\Windows\System32\drivers\etc\hosts

         在hosts文件配置:

192.168.208.128 www.myweb.com

192.168.208.128 www.p2p.com

         前面是Linux的IP,后面是你自定义的域名

(7)Nginx-虚拟主机案例 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_87

 

nginx 静态资源拦截 nginx过滤静态资源_nginx_88

 上传文件到linux

nginx 静态资源拦截 nginx过滤静态资源_学习_89

 

 这里配置了3台tomcat:9001、9002、9003分别放着几个war包:

nginx 静态资源拦截 nginx过滤静态资源_学习_90

 把项目移动到目录下:

nginx 静态资源拦截 nginx过滤静态资源_运维_91

 解压beijing.war

nginx 静态资源拦截 nginx过滤静态资源_运维_92

 分别解压:

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_93

 

nginx 静态资源拦截 nginx过滤静态资源_Nginx_94

 

nginx 静态资源拦截 nginx过滤静态资源_运维_95

 再复制出来一份配置文件:

nginx 静态资源拦截 nginx过滤静态资源_运维_96

nginx 静态资源拦截 nginx过滤静态资源_nginx_97

 

修改:

nginx 静态资源拦截 nginx过滤静态资源_Nginx_98

 

nginx 静态资源拦截 nginx过滤静态资源_nginx 静态资源拦截_99

启动nginx:

nginx 静态资源拦截 nginx过滤静态资源_nginx_100

 直接访问时不可以的,需要设置域名映射到虚拟机的ip地址

nginx 静态资源拦截 nginx过滤静态资源_学习_101

 

 

修改本机的配置:hosts

nginx 静态资源拦截 nginx过滤静态资源_运维_102

 添加代码:在访问的时候,对方根据我们的域名进行不同服务器的映射

nginx 静态资源拦截 nginx过滤静态资源_nginx_103

nginx 静态资源拦截 nginx过滤静态资源_运维_104

 添加之后就可以正常访问了:

 

nginx 静态资源拦截 nginx过滤静态资源_运维_105

  

nginx 静态资源拦截 nginx过滤静态资源_Nginx_106

nginx 静态资源拦截 nginx过滤静态资源_nginx_107