Nginx入门

Nginx入门

一、业务瓶颈

业务小,一个服务器足够

img

并发量增大,一台不能满足需求

img

横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。

img

我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点之上。这个过程用户是无感知的,用户并不知道是哪个服务器返回的结果,我们还希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验!所以我们使用了Nginx。

二、Nginx 简介

img

Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

正向代理

img

反向代理?

反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

img

负载均衡?

Nginx的负载均衡是指通过分发来自客户端的请求到多个后端服务器(也称为上游服务器)来平衡服务器负载的机制。它旨在提高系统的性能、可靠性和可扩展性。

负载均衡在客户端和后端服务器之间引入了一个中间层,其中Nginx充当负载均衡器。当客户端发送请求时,负载均衡器接收到请求,并根据特定的负载均衡算法将请求转发到后端服务器。

轮询

img

加权轮询

img

IP Hash

iphash对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

img

动静分离

Nginx充当前端服务器,它根据请求的类型将请求转发到适当的后端服务器或处理程序。

具体而言,它将静态资源的请求(如HTML、CSS、JavaScript、图像文件等)直接服务于客户端,而动态内容(如PHP、Java、Python脚本生成的页面)则由后端应用服务器处理。

动静分离的一般工作流程:

  1. 当客户端发送请求时,Nginx首先检查请求的文件类型。
  2. 如果请求的是静态资源(如图像、CSS文件等),Nginx会直接从磁盘上的指定位置返回该文件,而无需转发给后端服务器。
  3. 如果请求的是动态内容(如需要应用程序处理的页面),Nginx将转发该请求给后端应用服务器(如Tomcat、Node.js服务器等),并将响应返回给客户端。

img

三、Nginx实战

1. HTTP服务器

(1) 首先在文档根目录Docroot(/usr/local/var/www)下创建html目录, 然后在html中放一个index.html;

(2)配置nginx.conf中的server

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
user mengday staff;

http {
server {
listen 80;
server_name localhost;
client_max_body_size 1024M;

# 默认location
location / {
root /usr/local/var/www/html;
index index.html index.htm;
}
}
}

image-20230512213645066

(3)访问测试

http://localhost/ 指向/usr/local/var/www/index.html, index.html是安装nginx自带的html

(4)指令简介

  • server : 用于定义服务,http中可以有多个server块
  • listen : 指定服务器侦听请求的IP地址和端口,如果省略地址,服务器将侦听所有地址,如果省略端口,则使用标准端口
  • server_name : 服务名称,用于配置域名
  • location : 用于配置映射路径uri对应的配置,一个server中可以有多个location, location后面跟一个uri,可以是一个正则表达式, / 表示匹配任意路径, 当客户端访问的路径满足这个uri时就会执行location块里面的代码
  • root : 根路径,当访问http://localhost/test.html,“/test.html”会匹配到”/”uri, 找到root为/usr/local/var/www/html,用户访问的资源物理地址=root + uri = /usr/local/var/www/html + /test.html=/usr/local/var/www/html/test.html
  • index : 设置首页,当只访问server_name时后面不跟任何路径是不走root直接走index指令的;如果访问路径中没有指定具体的文件,则返回index设置的资源,如果访问http://localhost/html/ 则默认返回index.html

(5)location uri正则表达式

  • . :匹配除换行符以外的任意字符
  • ? :重复0次或1次
  • + :重复1次或更多次
  • * :重复0次或更多次
  • \d :匹配数字
  • ^ :匹配字符串的开始
  • $ :匹配字符串的结束
  • {n} :重复n次
  • {n,} :重复n次或更多次
  • [c] :匹配单个字符c
  • [a-z] :匹配a-z小写字母的任意一个
  • (a|b|c) : 属线表示匹配任意一种情况,每种情况使用竖线分隔,一般使用小括号括括住,匹配符合a字符 或是b字符 或是c字符的字符串
  • \ 反斜杠:用于转义特殊字符

小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。正则里面容易让人困惑的是\转义特殊字符。

2.常用命令

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进程

四、演示


Nginx入门
http://example.com/2023/05/12/Nginx入门/
Author
WYX
Posted on
May 12, 2023
Licensed under