nignx用的最多应该就是反向代理了吧(将内网的地址代理到外网)
1 反向代理
将内部服务器代理外部请求
server
{
listen 80;
server_name localhost;
client_max_body_size 1024M;
location /{
proxy_pass http://localhost:8080;
proxy_set_header Host $host:$server_port;
}
}
2 负载均衡
负载均衡配置一般都需要同时设置反向代理,通过反向代理跳转到负载均衡
自带4种负载均衡策略,还有2种常用的第三方 (RR --顺序 ,权重--weight ,ip_pash--固定ip ,fair --相应时间短的优先处理 ,url-hash-----对url进行hash处理 这样就能进行缓存 least_conn ----把请求转发给连接数最少的服务器)
1 RR默认(应该是request recently) 按照顺序来
每个请求按照时间顺序逐一分配到不同的后端服务器 如果后端服务器down掉了 能自动剔除
upstream test{
server localhost:8080;
server localhost:8081;
}
server {
listen 81;
server_name localhost;
client_max_body_size 1024M;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
}
}
这里我配置了两台服务器,当然实际上是一台,只是端口不一样,而8081服务器使不存在的,也就是说访问不到的,但是我们访问的http://localhost的时候也不会有问题,会默认跳转 http://localhost:8080 具体是因为Nginx会自动判断服务器的状态 如果服务器挂了就不会跳转到这台服务器
2 权重
指定轮询的几率 weight和访问比率成正比 用于后端服务器性能不均匀的情况
upstream test{
server localhost:8080 weight=9;
server localhost:8081 weight=1;
}
3 ip_hash
我们需要一个客户只访问一个服务器时,那么就需要使用ip_hash 了,ip_hash 的每一个请求按照访问ip的hash结果分配,这样每一个访客就能够固定访问一个后端服务器了,可以解决session问题
upstream test{
ip_hash;
server localhost:8080;
server localhost:8081;
}
当有服务器需要剔除的时候,必须手动down掉
4 fair 第三方
按照后端服务器响应的时间来分配请求,响应时间短的会优先分配
upstream backend{
fair;
server localhost:8080;
server localhost:8081;
}
5 url_hash
按照url的hash结果来分配请求,使每一个url定向到同一个后端服务器。在upstream 中加入hash语句 server不能写入weight等其他参数 hash_method 使用的hash算法
(是同一个url会达到同一台服务器,要配合缓存使用,一旦缓存住了资源就可以从缓存中读取)
upstream backend{
hash $request_uri;
hash_method crc32;
server localhost:8080;
server localhost:8081;
}
6 least_conn
把请求转发给连接数较少的后端服务器。轮询算法把请求平均的转发给各个后端,是他们的负载大致相同;但是,有些请求的占用时间很长,会导致其所在的后端负载较高 。(就是请求转发给连接数较少的后端服务器)
HTTP服务器
动静分离
正向代理
resolver 是配置的正向代理的dns服务器 listen是正向代理的端口
热启动
nginx -s reload