Nginx学习笔记

1、Nginx入门

 

1)简介

Nginx是一种Http和反向代理服务器,善于处理高并发和静态资源(而Tomcat作为web服务器,擅于处理动态资源)

2)优势

和其它 web 服务器(tomcat、apache)相比,Nginx 有如下几个优势:

高并发 热部署 快 低功耗 可反向代理、负载均衡、处理静态资源文件

3)安装

基于Linux环境

准备:安装gcc、pcre、zlib、openssl环境

安装:

下载nginx-1.12.2.tar.gz,解压,

生成makefile文件:./configure配置参数

编译并安装:

make

make install

启动 nginx:

cd /usr/local/nginx/sbin/

./nginx

4)说明

Nginx默认端口号是80,即可以使用ip地址直接访问

注意Linux系统设置防火墙开放相应的端口号(设置开放的端口号 firewall-cmd --add-port=80/tcp --permanent)

5)Nginx的配置文件nginx.conf

nginx.conf 配置文件分为三部分:

第一部分:全局块

从配置文件开始到 events 块之间的内容,主要设置一些影响 nginx 服务器整体运行的配置指令

worker_processes 1; 表示支持的并发处理量

第二部分:events 块

events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 worker_ process 可以同时支持的最大连接数等。

第三部分:http 块

http 块也可以包括 http 全局块、server 块。

① http 全局块 http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。

② server 块 这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了 节省互联网服务器硬件成本。

每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。 而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。

2、虚拟主机

指Nginx内部可以提供类似于主机的服务,即自身对外提供服务

两种设置方式

基于端口号的虚拟主机

在conf文件中配置server,如下

server {

listen 81;#指定监听端口号为:81
server_name localhost;

location / {
root html-1; #指定的是 nginx 安装目录下的某个文件夹的名字
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

按步骤进行测试

第二步:在 nginx 的安装目录下创建一个 html-1 文件夹,并设置 index.html 页面

第三步:重启 nginx :nginx -s reload

第四步:防火墙放开 81 端口号

第五步:在浏览器端测试:http://虚拟机ip地址:80、http://虚拟机ip地址:81

基于域名的虚拟主机

在conf文件中配置server,如下

server {

listen 80;
server_name www.teacher.com;#指定域名

location / {
root html; #指定的是 nginx 安装目录下的某个文件夹的名字
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

第二步:重新加载 nginx 的配置文件

第三步:配置 windows 的 c:/windows/system32/drivers/etc/hosts

虚拟机IP地址 www.teacher.com

第四步:测试,在浏览器输入:www.teacher.com

3、反向代理

1)简介

正向代理:客户端要访问局域网外的外网时需要通过访问代理服务器来实现。如某些。

正向代理是为客户端服务的,可以帮助客户端访问其无法访问到的资源。服务端不知道收到的访问是来自代理的访问还是真实客户端的访问。

反向代理:以代理服务器接收来自Internet的连接请求,并将请求转发给个服务器,然后将从服务器中获取的结果返回给请求的Internet客户端。

反向代理中反向代理服务器和内部服务器对外仅是一个服务器,体现为代理服务器的地址,隐藏了真实服务器的地址。

反向代理是为服务端服务的,可以帮助服务器接收来自客户端的请求,帮助服务器 做请求转发,负载均衡等。

2)配置方法

目标:使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中 nginx 监听端口为 9001,访问 http://127.0.0.1:9001/edu/ 直接跳转到 127.0.0.1:8081

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

方法:

1、准备两个Tomcat服务器,端口号分别为8081、8082

2、修改Nginx的conf配置文件的server部分如下

server {

listen 9001;#Nginx入口地址
server_name localhost;

location ~ /edu/ {#设置不同的地址拼接,表示进入不同的tomcat
proxy_pass http://127.0.0.1:8080;
index index.html;
}

location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
index index.html;
}

}

3、测试

在浏览器访问:

http://虚拟机IP地址/edu/a.html

http://虚拟机IP地址/vod/a.html

3)Location指令说明

语法有以下几种:

Location [=|~|~*|^~|@] 地址参数{...}

1、=:用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配

2、没有修饰符,必须以指定模式开始[模糊匹配],如‘/a/b’ 匹配路径以/a/b开头的路径,区分大小写

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

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

5、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求

优先级说明

Nginx学习笔记_第1张图片

4、负载均衡

当并发请求数量过高,单个服务器处理不了时,考虑增加服务器的数量,并将请求按一定方式分配由多个服务器处理,将负载分发到不同的服务器,即负载均衡

配置方法

目标:将一个客户端请求借助负载均衡分配给两个Tomcat服务器处理

配置好nginx.conf

upstream myserver {#称为上游服务器,即真实处理请求的业务服务器。
server 192.168.142.128:8080;
server 192.168.142.128:8081;
}

server {

listen 80;
server_name localhost;

location / {
proxy_pass http://myserver;
proxy_connect_timeout 10;#:后端服务器连接的超时时间_发起握手等候响应超时时间
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}

负载均衡策略

1、轮询(默认)

按时间顺序逐一分配给不同的服务器,若有服务器宕机,则自动忽略。

2、weight

设置服务器的权重,权重越高被分配的次数就越多

3、fair(第三方)

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

4、说明

栗子:

upstream myServer{
    server 192.168.142.128 down;
    server 192.168.142.128 weight=2;
    server 192.168.142.128 backup;
}

down:表示本服务器不参与负载

weight:表示权重

backup:表示备份机,只有在其它所有负载机都down掉的情况下参与负载

5、动静分离

Nginx擅于处理静态资源,可以借由Nginx将动态资源和静态资源分配给不同的服务器处理,Nginx负责处理静态资源。

在Nginx配置文件中

location ~ \.(gif|jpg|jpeg|png|bmp|swf)$ {
root /usr/share/nginx/html;#静态资源的存放路径
}

location ~ \.(jsp|do|action)$ {
proxy_pass http://myserver;#动态资源交由服务器处理
}

6、原理及优化配置

原理

client向master发送请求,master再将请求发送给某个worker,一个master往往有一个或多个worker。master获得请求后,worker会通过争抢机制获取该请求,在进行反向代理用Tomcat完成具体操作。

一个master多个worker的好处

1)可以使用nginx -s reload命令,利于Nginx来进行热部署操作;

2)每个worker是独立的进程,一个worker出现问题不会影响其它worker;

3)Nginx使用IO多路复用机制

一个请求占用的worker连接数

静态资源:2个,不用访问Tomcat

动态资源:4个

7、总结

Nginx 反向代理

Nginx 负载均衡

Nginx 动静分离

Nginx 原理及优化配置

你可能感兴趣的:(JavaSE高级)