Nginx-笔记

Nginx快速入门

1.简介

Nginx 是高性能的 HTTP 和 反向代理 的web服务器,处理高并发能力强大,能经受高负载的考验, 支持高达 50,000 个并发连接数。

Nginx 可以作为静态页面的 web 服务器

2.安装

nginx官网下载

2.1 windows安装

在官网下载nginx的windows压缩包,解压到一个路径没有中文的目录

点击打开nginx.exe即可运行nginx,默认运行在80端口,浏览器访问 localhost 即可看到nginx的默认页面

但是还是建议在该目录下使用命令行,输入start nginx 来启动nginx

2.2 linux安装

下载不带windows的包,传到 Linux 系统中解压

解压后进入 nginx 的目录下,执行文件 configure ,然后编译安装

1
2
3
4
5
./configure

make

make install

找到安装成功后的文件,然后进入sbin/ 运行 nginx

1
2
3
4
5
6
7
whereis nginx (输出nginx的路径)

cd xxx (在xxx处输入上一条命令输出的路径)

cd sbin/

./nginx

一条条输入后没有报错就是成功了

注意如果是部署在远程服务器,需要在安全组中打开相应的端口

2.3 常用命令

1
2
3
4
5
6
cd /usr/local/nginx/sbin
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程

3.Nginx相关概念

3.1 反向代理

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。

比如当我们访问一个网站的时候,这个网站背后可能有很多服务器,但对外暴露的只有一个域名。我们也只能通过这个域名来访问,然后我们的请求会被转发到后面的服务器上,从而达到隐藏服务器ip和端口等信息

在文件夹下的 conf/nginx.conf 中的 http{ } 内进行代理等配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
http {
...
server{
# 代理配置
# 结合下面2条配置,这里的服务监听的是localhost:80
listen 80; # 该服务监听的端口
server_name localhost; # 监听用户

# 下面代码的意思是,访问/时,以index.html index.htm为首页
location / {
root html; # 默认配置无需改动
index index.html index.htm; # 默认配置无需改动
}
}

server{
# 代理配置
listen 80;
server_name localhost;
location /api {
# 映射的url请求网址
# 也就是但访问 localhost:80/api/ 时,会将访问转发到以下路径之一
# 具体哪条路径,由3.2中配置的策略决定
proxy_pass http://127.0.0.1:8080/admin/;
}
}

}

3.2 负载均衡

模板如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
http {
# ...
# 配置集群
upstream myservers {
server 47.113.202.66:10:8080;
server 47.113.202.66:11:8080;
server 47.113.202.66:12:8081;
# ...
}
server{
# 代理配置
listen 80;
server_name localhost;
location /api {
#当访问localhost:80/api时,转发集群myservers中的某一个服务器中的admin下
proxy_pass http://myservers/admin;
}
}


}

Ⅰ、轮询策略(负载均衡默认的分配策略)

将用户的请求轮流分配给服务器,就像是挨个数数,轮流分配。如果后端有服务器宕机了,就会自动剔除。

1
2
3
4
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

Ⅱ、weight策略(权重策略)

简而言之,就是当weight(权重)越高时,被分配的用户请求就会越多。

1
2
3
4
upstream myserver {
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=5;
}

Ⅲ、ip_hash策略

每个请求访问会根据ip地址的hash结果进行分配,这样每个用户就会固定访问一个后端服务器,也就是只要用户的ip地址不发生改变,那会对应后续访问的后端服务器就不会发生变化,可以解决session的问题。

1
2
3
4
5
upstream myserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}

Ⅳ、fair策略(第三方)

按后端服务器的响应时间来分配,响应时间短的优先分配。比如,当客户端发出请求后,Nginx负载均衡,转发请求到后端服务器中,后端服务器后很多(比如:A服务器、B服务器……等等),其中如果B服务器响应速度最快,也就是响应时间最短,那么就会将请求转发给B服务器。

1
2
3
4
5
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
fair;
}