简介

Nginx 是一款HTTP和反向代理服务器,它的内存占用少,能够支持高达五万个并发连接响应,其主要有三个功能,反向代理、负载均衡

反向代理

  1. 正向代理,就相当于 VPN,当你想要访问一个服务器但是由于某种原因不能直接访问时,可以去访问一个代理服务器,再由那个代理服务器去访问。正向代理是代理客户端
  2. 反向代理,当用户发起请求想要访问某台服务器时,这个请求会指向一台代理服务器,代理服务器再将访问分发给其他服务器。反向代理是代理服务端

负载均衡

当某一时刻用户访问量特别大时,服务器的压力就会非常大,此时就会用到负载均衡,来减轻服务器的压力,Nginx主的负载均衡策略有 轮询、加权轮询、iphash等

  1. 轮询: 例如有三台服务器,第一次请求访问到服务器一,第二次访问到服务器二,第三次访问到服务器三,这样依次循环
  2. 加权轮询:若是某台服务器性能更加强大,则该服务器就会处理更多的请求,反之更少
  3. iphash: 根据用户的ip来永久指定某台服务器,这样这个用户的请求永远只达到这台服务器,可以解决session共享的问题

下载安装

在windows下

将下载好的安装包解压后(解压目录不要有中文),打开conf目录下的nginx.con文件,可以看到监听的端口是80,随后,在根目录中双击或使用cmd运行 start nginx 启动(没有启动日志),在浏览器访问 localhost 80端口即可

在 Linux 下

使用xftp将文件传输至 centos,并解压,得到以下文件

随后执行 ./configure ,再执行 make 命令 和 make install

全部执行完之后 使用 whereis nginx 查看所在位置,并cd过去,执行它 sbin 目录下的 nginx 即可启动 ./nginx

常用命令

1
2
3
4
5
./nginx  启动
./nginx -s -stop 强制停止
./nginx -s quit 正常停止
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx 进程

修改配置信息就行反向代理

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
## 全局配置
events {
worker_connections 1024;
}


http {
## 主要配置

## 负载均衡配置
upstream test{
# 服务器资源 例如这里有两个资源 weight为权重,全部为一时则轮询,否则进行加权轮询
server 127.0.0.1:9000 weight=1;
server 127.0.0.1:8080 weight=1;
}

upstream testt{
server 127.0.0.1:8080 weight=1;
}

## 请求转发
## 每一个 server对象 就是监听一个端口 ,而server对象下的 location 就是该端口下的资源地址
## 这里的配置为 监听 http://localhost:80/
server {
listen 80;
server_name localhost;

## 每一个location 就是一个请求路径
## 例如这里 就是监听 http://localhost:80/
## 访问这个地址,就会根据这个配置信息就行加载
location / {
root html;
index index.html index.htm;
proxy_pass http://test
}

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

}

## 这里 监听 90 端口 下的 /a 地址
## http://localhost:90/a
## 访问此路径 就会转到上面的 testt 配置 也就是 http://127.0.0.1:8080
server {
listen 90;
server_name local2;
location /a {
root html;
index index.html index.htm;
proxy_pass http://testt;
}
}



}

当使用nginx -s reload生效配置时,若出现*nginx: [error] CreateFile()*错误,则检查logs下是否有 nginx.pid 文件,若没有,则杀掉nginx进程,并重新启动(推荐使用 start nginx 启动)