Nginx学习笔记

Nginx简介

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

正向代理与反向代理

正向代理:例如用户通过浏览器访问Google,直接访问是访问不到的,我们所使用的科学上网工具访问Google,就是一种正向代理:用户通过科学上网工具访问代理服务器,然后代理服务器去访问Google,将获取到的数据再返回给用户。

反向代理:用户通过访问反向代理服务器,由反向代理服务器将请求分发给不同的服务器。用户对真正提供服务的服务器是无感知的,暴露给用户的是反向代理服务器,隐藏了真正提供服务的服务器。

负载均衡

随着访问网站访问并发量的增大,可以将原来的单体架构进行拆分,增加多台服务器,在用户访问服务器之前先访问反向代理服务器,由反向代理服务器将多个请求分发到多台服务器上,将负载分发到不同的服务单元,既保证了服务发可用性,也加快了请求的响应时间。

动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析的速度,降低原来单个服务器的压力。

Windows下安装与启动

下载完成后直接解压,命令行进入nginx.exe所在的文件路径,使用命令行执行相关命令

1
2
3
4
5
6
7
8
# 启动服务
start nginx

# 关闭服务
nginx -s stop

# 重新加载服务
nginx -s reload

启动后直接访问localhost:80

Nginx配置文件

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

1
2
# 表示可以支持的最大并发量
worker_processes 1;

events块:主要影响nginx服务器与用户的网络连接

1
2
# 表示支持的最大连接数
worker_connections 1024;

http块:配置最频繁的部分,nginx的主要功能就是在这里配置,包括http全局块和server

在Nginx上部署前端项目,并通过反向代理的方式,实现跨域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
server {
# 监听的IP和端口
listen 8080;
server_name localhost;

location / {
# 前端项目,这里直接放在了nginx根目录下面,可以设置为代理服务器
root wms_front;
index index.html index.htm;
}

location ~ /wms/ {
proxy_pass http://localhost:8081; # 配置自己后台访问的ip端口或域名
}
}

在访问http://localhost:8080时,实际访问的是Nginx根目录下的wms_front/index.html
http://localhost:8080/wms/下的所有请求都会转发到http://localhost:8081/wms/

负载均衡配置:

http块添加:

1
2
3
4
5
6
7
8
9
10
upstream myserver{
ip_hash;
server 192.168.1.1 weight=1;
server 192.168.1.2 weight=1;
fair;
}
location / {
proxy_pass http://myserver;
proxy_connection_timeout 10;
}

nginx分配策略:

1、轮询
每个请求按照时间顺序逐一分配到不同的服务器,如果后端服务器宕机,则自动剔除。

2、权重
weight表示权重,默认为1,权重越高被分配的客户端越多 。

3、ip_hash
每个请求按访问iphash结果分配,这样每个ip固定访问一个服务器,可解决session问题。

4、fair
按后端服务器的响应时间分配,响应时间短的,优先分配。

Nginx原理

nginx启动后,会有一个master进程和多个worker进程,master进程主要用来管理worker进程,包括:接受信号,将信号分发给worker进程,监听worker进程工作状态,当worker进程退出时(非正常),启动新的worker进程。基本的网络事件会交给worker进程处理。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。