nginx理论
nginx是一款轻量级的web服务器、反向代理服务器。经常用来处理前端资源,并代理后端程序。正向代理代理的是请求者、客户端,反向代理代理的是服务器、服务端,代理了谁,隐藏了谁。
优点:它占用内存少、启动快、高并发能力强。
如何做到高并发的,nginx的work数目与cpu绑定,可以启动多个worker。
Server
server组件用于配置一个服务,需要为该服务指定监听的ip和端口,配置后,nginx会启动一个服务处理发送到该端口的请求。
server需要配置如下属性:
listen:监听的端口号
server_name:监听的ip
location: 如何映射发送到该端口的请求,可以使用正则表示,匹配顺序由上至下。
root:用于指定静态资源目录
index: 用于指定默认加载的页面
proxy_pass: 用于指定该location请求转发到何处,本质是反向代理。
upstream
借助upstream我们可以将多个服务归为一组,然后使用一个location反向代理这个组,一般组内的多个服务是同质的,是分布在多个机器上的一样的服务,主要通过upstream实现负载均衡,或者灵活的机器上下线。
负载均衡有如下的可选策略:
轮询:时序轮流分配给每个服务
权重:指定分配的比重
公平:公平的按照响应时间分配,响应时间短的优先分配
url_hash:按照url的内容硬性分配机器
ip_hash: 按照前段ip分配机器,保证同一个ip总是分配至相同的后端server
worker
nginx使用master管理多个worker,一般worker的数量不能大于核心数目。master负责管理配置文件,服务的启动销毁等。worker负责处理客户端发送的请求。
Location
Location用于指定路径映射的服务,控制反向代理的具体规则。
Location内部可以配置很多属性,如:
rewrite "^/testtest/(.*)$" /cvelistnew/$1 break;//用于改写发送到后端服务后的访问接口路径 proxy_pass http://up1;
配置示例
server {
listen 8344;
server_name localhost;
client_max_body_size 100m;
location /{
root /home/platform/dist20220616;
index index.html;
proxy_pass http://up1;
rewrite "^/testtest/(.*)$" /cvelistnew/$1 break;
}
upstream up1 {
server 192.168.1.22;
server 192.168.1.33;
server 192.168.1.44;
}
}