反向代理1
在nginx中进行请求转发的配置
进入nginx 配置文件 conf/conf.d文件夹
vi编辑 default.conf (我这里使用xftp把配置文件拖到桌面上就行修改配置的)
修改内容如下: 其中192.168.152.128是我nginx服务器IP,http://192.168.152.1:8002/是我springboot工程的访问路径
proxy_pass 后面如果是服务器不加/,如果包含路径要加/列如
proxy_pass http://192.168.152.1:8080
proxy_pass http://192.168.152.1:8080/login/
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://192.168.152.1:8002/;
}
location ~ /edu/ {
proxy_pass http://myserver;
root /usr/share/nginx/html;
index index.html index.htm;
}
location /www/ {
root nginx;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
反向代理多台服务器
同样也是修改default.conf配置文件
location ~ /edu/ {
proxy_pass http://192.168.152.1:8081;
}
location ~ /vod/ {
proxy_pass http://192.168.152.1:8082;
}
在这里我们使用到了location指令、
location [=|~|~*|^~] url{
}
= 用于不含正则表达式的url前,要求请求字符串与url严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
~ 用于表示url包含正则表达式,并且区分大小写。
~* 用于表示url包含正则表达式,并且不区分大小写。
^~开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。
nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)
注意:如果url包含正则表达式,则必须要有~或者~*标识
配置完成以后重启nginx 来演示一下
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
负载均衡
负载均衡技术是将大量的客户端请求通过特定的策略分配到集群中的节点,实现快速响应的应用技术。在应对高并发的应用请求时,单节点的应用服务计算能力有限,无法满足客户端的响应需求,通过负载均衡技术,可以将请求分配到集群中的多个节点中,让多个节点分担高并发请求的运算,快速完成客户端的请求响应
负载均衡策略
1.轮询 (默认方式)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
修改配置文件 vi nginx.conf
添加以下内容
upstream myserver{
server 192.168.152.1:8081;
server 192.168.152.1:8083;
}
在回到default.conf配置文件
location ~ /edu/ {
proxy_pass http://myserver;
root /usr/share/nginx/html;
index index.html index.htm;
}
myserver 是自定义的名称 proxy_pass后面的myserver要前后对应
weight 权重策略
weight代表权重,默认为1,权重越高被分配的客户端请求越多
upstream myserver{
server 192.168.152.1:8081 weight=2;
server 192.168.152.1:8082 weight=1;
}
ip_hash:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream myserver{
ip_hash;
server 192.168.152.1:8081;
server 192.168.152.1:8082;
}
fair第三方(需要安装nginx-upstream-fair)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream myserver{
server 192.168.1.13:8081;
server 192.168.1.13:8082;
fair;
}