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

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

  • Nginx简介
  • Nginx相关概念
    • 反向代理
    • 负载均衡
    • 动静分离
  • Nginx安装
  • Nginx命令
  • Nginx配置
  • Nginx配置实例
    • 反向代理1
    • 反向代理2
    • 负载均衡
    • 动静分离

Nginx简介

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

Nginx相关概念

反向代理

  • 正向代理

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

  • 反向代理

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

负载均衡

  • 负载均衡

负载均衡是将客服端的请求分发到多台服务器的方法
尚硅谷Nginx教程由浅入深--笔记_第1张图片

动静分离

  • 动静分离

为了加快网站的解析速度,将网站的动态资源(jsp、servlet)和静态资源(html、css、js)分开。
尚硅谷Nginx教程由浅入深--笔记_第2张图片

Nginx安装

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

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

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

Nginx命令

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

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

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. 具体配置
  • 在Windows中的C:/Windows/System32/drivers/etc/hosts在中配置域名
...
192.168.1.100 www.123.com
  • 在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;
        }
  • 测试,浏览器访问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. location说明
    location用户匹配URL,语法如下:
location [ = | ~ | ~* | ^~ ] uri {
	...
}

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. 负载均衡策略
  • 轮询(默认):按照时间顺序逐一分配到后端服务器
  • weight:weight默认值为1,权重越高被分配的客户端越多
upstream mystream {
    server 192.168.1.100:8080 weight=5;
    server 192.168.1.100:8081 weight=10;
}
  • ip_hash:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题
upstream mystream {
	ip_hash;
    server 192.168.1.100:8080 ;
    server 192.168.1.100:8081 ;
}
  • fair(第三方):按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream mystream {
    server 192.168.1.100:8080 ;
    server 192.168.1.100:8081 ;
	fair;
}

注: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。
    尚硅谷Nginx教程由浅入深--笔记_第3张图片

  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;       # 允许目录访问
	}
}

你可能感兴趣的:(nginx,笔记,运维)