🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 代理 ### 正向代理: 正向代理 是一个位于客户端和原始服务器 (origin server) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标 (原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 主要为了越过局域网内的防火墙实现访问网站 ### 反向代理: 反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间 (name-space) 中的内容发送普通请求,接着反向代理将判断向何处 (原始服务器) 转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。 为了将防火墙后面的服务器提供给 Internet 用户访问 也可以实现负载均衡,动静分离,url 策略 ~~~text server { listen 80; server_name example.test; #监听地址 location ~ /example1/ { proxy_pass http://127.0.0.1:5000; } location ~ /example2/ { proxy_pass http://127.0.0.1:8080; } } ~~~ ## 负载均衡 将原先请求集中到单个服务器上的情况改为增加服务器的数量,然后将请求分发到各个服务器上,将负载分发到不同的服务器,即负载均衡。 ~~~ upstream myserver { server 192.167.4.32:5000; server 192.168.4.32:8080; } server { listen 80; #监听端口 server_name example.test; #监听地址 location / { root html; #html目录 index index.html index.htm; #设置默认页 proxy_pass http://myserver; #请求转向 myserver 定义的服务器列表 } } ~~~ ### Nginx 分配服务器策略 - 轮询(默认) 按请求的时间顺序依次逐一分配,如果服务器down掉,能自动剔除。 - 权重 weight 越高,被分配的客户端越多,默认为 1 - ip 按请求 ip 的 hash 值分配,每个访客固定访问一个后端服务器 - fair 按后端服务器的响应时间来分配,响应时间短的优先分配到请求 ~~~text upstream myserver { ip_hash; server 127.0.0.1:8000 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6801; server 127.0.0.1:6802 backup; } 1. down 表示单前的server暂时不参与负载 2. weight 默认为1,weight 越大,负载的权重就越大。 3. max_fails :允许请求失败的次数默认为1,当超过最大次数时,返回 proxy_next_upstream 模块定义的错误 4. fail_timeout:max_fails 次失败后,暂停的时间。 5. backup: 其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻。 ~~~ ## 动静分离 ~~~text upstream php { server 192.168.10.10:80 # php 给这个服务器处理 } upstream static { server 192.168.10.11:80 # html 给这个服务器处理 } server{ listen 80; server_name a.com; location ~ \.(gif|jpg|png|htm|html|css|js)(.*) { # 匹配所有静态资源文件用这个代理 root /data/; # html目录 proxy\_pass http://static; autoindex on;; # 自动打开文件列表 } location ~ \.php$ { # 匹配php文件用这个代理 proxy_pass http://php; # 这个地址一定是上面定义的负载均衡的名字 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ~~~