Nginx

nginx是常见的web服务器

Nginx 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器

1、为什么要使用nginx

Nginx 是一个高性能Web和反向代理服务器, 它具有有很多非常优越的特性:

  • 在高连接并发的情况下,Nginx是Apache服务器不错的替代品 Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应
  • Nginx作为负载均衡服务器
  • 作为邮件代理服务器 Nginx 同时也是一个非常优秀的邮件代理服务器
  • Nginx 是一个安装 非常的简单, 配置文件 非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.

下载

官网:http://nginx.org/

官方文档:http://nginx.org/en/docs/

下载:http://nginx.org/en/download.html

2、常用指令

cmd进入nginx安装的目录

1、nginx.exe -t 测试nginx是否有错误

2、nginx -s stop 快速关闭nginx,可能不保存相关信息

3、nginx -s reload 该变配置后,重新加载

4、nginx -s reopen 重新打开日志文件

3、http反向代理配置

进入nginx安装目录中的conf中的nginx.conf

Snipaste_2021-06-05_16-12-16

在#gzip on后输入

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
#设定实际的服务器列表 
upstream my_server{
#运行8080端口时候进入
server 127.0.0.1:8080;
}
#如果需要配置多个项目,则粘贴上面代码,改变名字,端口号
#http虚拟主机服务器配置
server {
#监听80端口,80端口是知名端口号,用于HTTP协议
listen 80;

#定义使用www.xx.com访问
server_name www.glxy.com;

#首页
index index.html

#编码格式
charset utf-8;

#代理配置参数
proxy_connect_timeout 180;
proxy_send_timeout 180;
proxy_read_timeout 180;
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;

#反向代理的路径(和upstream绑定),location 后面设置映射的路径
location / {
proxy_pass http://my_server;
}
#多个则需要粘贴多个方向代理路径

# 所有静态文件由nginx直接读取不经过tomcat
location ~ .*\.(js|bbb|txt|jpg){
#项目在tomcat的地址
root E:\服务器\apache-tomcat-9.0.41\webapps\glxy-web;
expires 30d;
}
#有web项母,该web项目内含有静态资源则需要引入静态资源
}

如果你是没有域名则可以去C:\Windows\System32\drivers\etc添加

1
2
例:
127.0.0.1 www.glxy.com

你访问www.glxy.com则会返回127.0.0.1

4、静态资源虚拟主机配置

1
2
3
4
5
6
7
8
9
10
11
server  {
listen 80;
server_name static.test.com;#这个为静态资源网址

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|ico|svg|json|html)$ {
#请求的根文档
root D:/static;#你静态资源存放的地址
#过期时间
expires 30d;
}
}

5、负载资源配置

1、轮询(常用)

1
2
3
4
5
upstream my_server {
server 192.168.1.101:8888;
server 192.168.1.102:8888;
server 192.168.1.103:8888;
}

这样配置则需要修改

1
2
3
proxy_connect_timeout 1;
proxy_send_timeout 1;
proxy_read_timeout 1;

不修改,则一旦有一个服务器server未开启,则会浪费你大量时间等待响应

这种形式为,如果三个服务器一起启动,则轮流每个进一次

2、weight(常用)

轮询的加强版,添加了权重

1
2
3
4
5
upstream backend {
server 192.168.1.101 weight=1;
server 192.168.1.102 weight=2;
server 192.168.1.103 weight=3;
}

则6分之一的sever进第一个请求,3分之一的server进第二个,2分之一的server进第三个请求

3、ip_hash

每个请求按照访问ip进入请求,这样子每个访客辉固定访问一个server服务器‘

1
2
3
4
5
6
upstream backend {
ip_hash;
server 192.168.1.101:7777;
server 192.168.1.102:8888;
server 192.168.1.103:9999;
}

4、fair

fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。如果需要使用这种调度算法,必须下载Nginx的upstr_fair模块。

1
2
3
4
5
6
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
fair;
}

5、url_hash

目前用consistent_hash替代url_hash 与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。

1
2
3
4
5
6
7
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
hash $request_uri;
hash_method crc32;
}