• 尚硅谷Nginx教程由浅入深--笔记


    Nginx简介

    Nginx是一个高性能的HTTP和反向代理服务器,特点是内存占用少,并发能力强。

    Nginx相关概念

    反向代理

    • 正向代理

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

    • 反向代理

    我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器就是一个服务器,暴露的是代理服务器的地址,隐藏了真是服务器的IP地址和端口。

    负载均衡

    • 负载均衡

    负载均衡是将客服端的请求分发到多台服务器的方法
    在这里插入图片描述

    动静分离

    • 动静分离

    为了加快网站的解析速度,将网站的动态资源(jsp、servlet)和静态资源(html、css、js)分开。
    在这里插入图片描述

    Nginx安装

    1. 安装prce依赖
    ./configure
    pcre-config --version
    
    • 1
    • 2
    1. 安装其他依赖
    yum -y install zlib zlib-devel gcc-c++ libtool openssl openssl-devel
    
    • 1
    1. 安装启动Nginx
    yum install nginx
    systemctl start nginx
    systemctl enable nginx
    
    • 1
    • 2
    • 3

    默认安装位置/usr/local/nginx,启动方式:./nginx

    1. 防火墙
    firewall-cmd --list-all
    firewall-cmd --add-port=80/tcp permanent
    firewall-cmd --reload
    
    • 1
    • 2
    • 3

    Nginx命令

    命令路径/usr/local/nginx/sbin,可以先配置环境变量。

    ./nginx -v  # 查看版本号
    ./nginx  # 启动
    ./nginx -s stop  # 关闭
    ./nginx -s reload  # 重新加载
    
    • 1
    • 2
    • 3
    • 4

    Nginx配置

    配置文件路径:/usr/local/nginx/conf

    1. 第一部分 全局快
      配置整体运行的指令

    2. 第二部分 events块
      主要配置服务器的用户网络连接

    3. 第三部分 http块

    • http全局块
    • server块

    Nginx配置实例

    反向代理1

    1. 实现效果
      浏览器访问www.123.com,跳转到Linux系统的Tomcat页面

    2. 准备工作

    • 安装Tomcat,使用默认端口8080,并启动
    • 开放端口
    firewall-cmd --add-port=8080/tcp --permanent
    firewall-cmd --reload
    
    • 1
    • 2
    1. 具体配置
    • 在Windows中的C:/Windows/System32/drivers/etc/hosts在中配置域名
    ...
    192.168.1.100 www.123.com
    
    • 1
    • 2
    • 在Nginx的配置文件/usr/local/nginx/conf/nginx.conf中配置,配置http块的server块。
    server {
            listen       80;
            server_name  192.168.1.100;
    
            #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;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 测试,浏览器访问www.123.com,显示的是tomcat的页面,访问www.123.com:8080也可以显示tomcat页面,服务器端关闭了8080端口(firewall-cmd --remove-port 8080/tcp --permanent)后,只能通过80端口访问,无法通过8080端口访问。

    反向代理2

    1. 实现效果
      访问http://www.123.com:9001/edu/直接跳转到www.123.com:8080/edu/页面
      访问http://www.123.com:9001/vod/直接跳转到www.123.com:8081/vod/页面
    2. 准备工作
    • 准备两个tomcat服务器,一个8080端口,一个8081端口,开放8080,8081,9001端口
    • 创建测试页面
    1. 具体配置
    • 在Nginx的配置文件/usr/local/nginx/conf/nginx.conf中配置,配置http块的server块。
    server {
            listen  9001;
            server_name 192.168.1.100;
    
            location ~ /edu/ {
                proxy_pass http://127.0.0.1:8080;
            }
    
            location ~ /vod/ {
                proxy_pass http://127.0.0.1:8081;
            }
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    1. 测试
      测试结果同实现效果
    2. location说明
      location用户匹配URL,语法如下:
    location [ = | ~ | ~* | ^~ ] uri {
    	...
    }
    
    • 1
    • 2
    • 3

    1、=:用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
    2、~:用于表示uri包含正则表达式,且区分大小写
    3、~*:用于表示uri包含正则表达式,并且区分大小写
    4、^~:用于不含正则表达式的uri前,要求Nginx服务器找到表示uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。

    负载均衡

    1. 实现效果
      在浏览器中输入http://192.168.1.100/edu/a.html,负载均衡效果,平均到8080和8081端口中。
    2. 准备工作
    • 准备两台tomcat服务器,一台8080端口,一台8081端口。
    • 在两台tomcat里面的webapps目录中,都创建名称是edu的文件夹,在edu文件夹中创建a.html文件,用于测试
    1. 实际配置
      在http块中配置
    upstream mystream {
        server 192.168.1.100:8080;
        server 192.168.1.100:8081;
    }
    server {
    	server_name 192.168.1.100;
    	location / {
    		proxy_pass http://mystream;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    1. 负载均衡策略
    • 轮询(默认):按照时间顺序逐一分配到后端服务器
    • weight:weight默认值为1,权重越高被分配的客户端越多
    upstream mystream {
        server 192.168.1.100:8080 weight=5;
        server 192.168.1.100:8081 weight=10;
    }
    
    • 1
    • 2
    • 3
    • 4
    • ip_hash:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
    upstream mystream {
    	ip_hash;
        server 192.168.1.100:8080 ;
        server 192.168.1.100:8081 ;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • fair(第三方):按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
    upstream mystream {
        server 192.168.1.100:8080 ;
        server 192.168.1.100:8081 ;
    	fair;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注:fair是第三方的,因此需要安装模块,否则会有如下报错

    nginx: [emerg] unknown directive “fair” in /usr/local/nginx/conf/nginx.conf:35

    动静分离

    1. 什么是动静分离
      动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分为两种,一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主力推崇的方案;另一种是动态跟静态文件混合发布,通过Nginx来分开。
      通过location指定不同的后缀名称实现不同的请求转发。通过expires参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务器端验证,直接通过浏览器自身确认是否过期即可所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expires来缓存),这里设置3d,表示在这3天之内访问这个URL,发送一个请求,比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,则直接从服务器重新下载,返回状态码200。
      动静分离图

    2. 准备工作

    • 新建/data目录,下面再新建/data/www/目录和/data/images/目录,将pic-1.png复制到/data/images/目录,将a.html复制到/data/images目录。
    1. 实际配置
      在/usr/local/nginx/conf/nginx.conf中配置如下:
    server {
    	server_name 192.168.1.100;
    	location /www/ {
    		/data/;
    	}
    	location /images/ {     # 指定uri
    		/data/;             # 指定路径
    		autoindex on;       # 允许目录访问
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    深度强化学习与APS的一些感想
    ubuntu18.04设置开机自动启动脚本(以自动启动odoo命令行为例讲解)
    永州动力电池实验室建设合理布局方案
    前端数据可视化:ECharts使用
    使用Docker commit的方式制作openGauss镜像
    93 # 实现 express 错误处理中间件
    如何远程配置linux系统和在linux系统安装软件
    【学习笔记】[COCI2018-2019#1] Teoretičar
    Kubernetes:kube-apiserver 之 scheme(二)
    【新的小主机】向日葵远程控制ubuntu
  • 原文地址:https://blog.csdn.net/qq_42478683/article/details/122473197