1 反向代理介绍
https://www.cnblogs.com/jthr/p/16827214.html
2 负载均衡介绍
https://www.cnblogs.com/jthr/p/16827328.html
3 Nginx的反向代理配置
3.1 配置server
把location下面的root和index配置注释掉,添加proxy_pass配置,值就是代理的地址。
注意,这里proxy_pass的地址要支持https的话还其它需要额外的配置。
server {
listen 80;
server_name nginx1.com;
location / {
proxy_pass http://www.atguigu.com;
#root /usr/local/mynginx/nginx1;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
3.2 访问nginx1.com
执行命令:systemctl reload nginx重新加载nginx
浏览器的地址栏还是nginx1.com,代理成功
4 Nginx的负载均衡配置
4.1 启动两个服务
先在计算机上启动两个服务
192.168.28.1:8081
192.168.28.1:8082
它们分别提供一个接口
@RestController
@RequestMapping("/api")
public class NginxController1 {
@GetMapping
public String test1(){
return "success test1 8081";
}
}
@RestController
@RequestMapping("/api")
public class NginxController1 {
@GetMapping
public String test1(){
return "success test1 8082";
}
}
4.2 配置nginx
1)配置serer
修改proxy_pass的值:http://httpadr; 其中httpadr是一个别名,随便取名字
server {
listen 80;
server_name nginx1.com;
location / {
proxy_pass http://httpadr/api;
#root /usr/local/mynginx/nginx1;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2)配置upstream
upstream是和server同级别的
注意:upstream 后面接的httpadr要和上面的别名对应上(http://httpadr/api;),这样组合就形成完整的路径http://192.168.28.1:8081/api,http://192.168.28.1:8082/api
upstream httpadr{
server 192.168.28.1:8081;
server 192.168.28.1:8082;
}
server {
listen 80;
server_name nginx1.com;
location / {
proxy_pass http://httpadr/api;
#root /usr/local/mynginx/nginx1;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
4.3 访问nginx1.com
执行命令:systemctl reload nginx重新加载nginx
4.4 负载均衡策略
默认情况下,nginx采用的是轮询策略,nginx还提供了其他几种常用的负载均衡配置
4.4.1 轮询
upstream bakend {
server 192.168.0.1;
server 192.168.0.2;
}
4.4.2 weight
weight代表权重,默认为1,权重越高,被分配的客户端请求就会越多
upstream webservers{
server 192.168.9.134:8081 weight=8;
server 192.168.9.134:8082 weight=2;
}
4.4.3 ip_hash
每个请求按访问IP的hash结果进行分配,这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题
upstream bakend {
ip_hash;
server 192.168.0.1:88;
server 192.168.0.2:80;
}
4.4.4 fair(需要第三方插件)
按后端服务器的响应时间来分配请求,响应时间短的将会被优先分配
upstream webservers{
server 192.168.9.134:8081;
server 192.168.9.134:8082;
fair;
}
4.4.5 url_hash(需要第三方插件)
按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率
upstream webservers{
hash &request_uri;
server 192.168.9.134:8081;
server 192.168.9.134:8082;
}
4.4.6 least_conn
按节点连接数分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况
upstream webservers{
least_conn;
server 192.168.9.134:8081;
server 192.168.9.134:8082;
}