搞的比较简单,可能复杂的还是自己去学
本来以为宝塔的有,但是发现这玩意宝塔居然收钱???
想薅我羊毛是不可能的,自己研究了一下 干了
安装好nginx后,在网站配置修改:
upstream backend {
server 127.0.0.1:9880;
server 127.0.0.1:9881;
server 127.0.0.1:9882;
}
server {
listen 8081;
server_name xia.haxihao.com;
index index.php index.html index.htm default.php default.htm default.html;
root d:/wwwroot/xia.haxihao.com;
#START-ERROR-PAGE
error_page 404 /404.html;
#END-ERROR-PAGE
#HTTP_TO_HTTPS_START
#HTTP_TO_HTTPS_END
#LIMIT_INFO_START
#LIMIT_INFO_END
#SSL-INFO-START
#SSL-INFO-END
# 反向代理到后端服务器
location / {
proxy_pass http://backend; # 使用上面定义的 upstream
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 反代清理缓存配置
location ~ /purge(/.*) {
proxy_cache_purge cache_one \$1$is_args$args;
}
#proxy 反向代理
include proxy/xia.haxihao.com/*.conf;
#PHP-INFO-START
include php/00.conf;
#PHP-INFO-END
#REWRITE-START
include rewrite/xia.haxihao.com/*.conf;
#REWRITE-END
#redirect 重定向
include redirect/xia.haxihao.com/*.conf;
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) {
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known {
allow all;
}
access_log D:/BtSoft/wwwlogs/xia.haxihao.com.log;
error_log D:/BtSoft/wwwlogs/xia.haxihao.com.error.log;
}
自己对比下 自己的配置跟我的配置多了哪些内容就知道改哪些地方了
关于 upstream 的配置参数
upstream模块参数
server 负载后面的RS配置,可以是ip或者域名。
weight 请求服务器的权重。默认值为1,越大表示接受的请求比例越大。
max_fails nginx 尝试连接后端主机失败的次数。这个数值需配合proxy_net_upstream,fastcgi_next_upstream和memcached_next_upstream这三个参数来使用的。当nginx接收后端服务器返回这三个参数定义的状态码时,会将这个请求转发给正常工作的后端服务器,例如404,502,503
fail_timeout 在max_fails定义的失败次数后,距离下次检查的时间间隔,默认10s
backup 热备配置,标志这台服务器作为备份服务器,若主服务器全部宕机了,就会向它转发请求
down 表示这个服务器永不可用,可配合ip_hash使用
demo:
server linux.example.com weight=5;
server 127.0.0.1:8080 max_fail=5 fail_timeout=10s;
# 当5次连续检查失败后,间隔10s后重新检测。
server linux.example.com:8080 backup;
# 指定备份服务器。作用:等上面服务器全部不可访问时就向它转发请求。
server 192.168.0.223; #这行标签和下行是等价的
server 192.168.0.224:80 weight=1 max_fails=1 fail_timeout=10s; #这行标签和上一行是等价的,此行多余的部分就是默认配置,不写也可以。
server 192.168.0.225:80 weight=1 max_fails=2 fail_timeout=20s backup;
Nginx负载均衡调度算法
(1)rr轮询(默认)
默认调度算法,按照客户端请求逐一分配到不同的后端服务器,宕机的服务器会自动从节点服务器池中剔除。
upstream server_pools {
server 192.168.1.251;
server 192.168.1.252;
}
注意:对于服务器性能不同的集群,该算法容易引发资源分配不合理等问题。
(2)wrr加权轮询(weight)
在rr轮询算法的基础上加上权重,权重和用户访问成正比,权重值越大,被转发的请求也就越多
upstream server_pools {
server 192.168.1.251 weight=5;
server 192.168.1.252 weight=10;
}
加权轮询应用于服务器性能不等的集群中,使资源分配更加合理化。
(3)ip_hash(会话保持)
每个请求按访问 IP 的hash结果分配,每个访客固定访问一个后端服务器,可解决session不共享的问题。
upstream server_pools {
ip_hash;
server 192.168.1.251;
server 192.168.1.252;
}
Session 不共享是说,假设用户已经登录过,此时发出的请求被分配到了 A 服务器,但 A 服务器突然宕机,用户的请求则会被转发到 B 服务器。但由于 Session 不共享,B 无法直接读取用户的登录信息来继续执行其他操作。
(4)fair(动态调度算法)
根据后端节点服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pools {
server 192.168.1.251;
server 192.168.1.252;
fair;
}
这是更加智能的调度算法,但Nginx本身不支持fair调度算法。如果需要使用fair调度,必须下载Nginx相关模块upstream_fair。
(5)url_hash算法(web缓存节点)
根据访问URL的hash结果来分配请求,让每个URL定向到同一个后端服务器。
upstream server_pools {
server qll:9001;
server qll:9002;
hash $request_uri;
hash_method crc32;
}
同样,Nginx本身是不支持url_hash,如果需要使用这种调度算法,必须安装Nginx的hash模块软件包。