nginx反向代理配置

nginx 反向代理,就是将前端发送的动态请求由 nginx 转发到后端服务器。

那为什么不直接通过浏览器直接请求后台服务端,需要通过nginx反向代理呢?

nginx 反向代理的好处

提高访问速度

因为nginx本身可以进行缓存,如果访问的同一接口,并且做了数据缓存,nginx就直接可把数据返回,不需要真正地访问服务端,从而提高访问速度。

进行负载均衡

所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器。

保证后端服务安全

因为一般后台服务地址不会暴露,所以使用浏览器不能直接访问,可以把nginx作为请求访问的入口,请求到达nginx后转发到具体的服务中,从而保证后端服务的安全。

nginx 反向代理的配置方式

powershell 复制代码
server{
    listen 80;
    server_name localhost;
    
    location /api/{
        proxy_pass http://localhost:8080/admin/; #反向代理
    }
}

proxy_pass:该指令是用来设置代理服务器的地址,可以是主机名称,IP地址加端口号等形式。

如上代码的含义是:监听80端口号, 然后当我们访问 http://localhost:80/api/../..这样的接口的时候,它会通过 location /api/ {} 这样的反向代理到 http://localhost:8080/admin/上来。

nginx 负载均衡的配置方式

当如果服务以集群的方式进行部署时,那nginx在转发请求到服务器时就需要做相应的负载均衡。其实,负载均衡从本质上来说也是基于反向代理来实现的,最终都是转发请求。

nginx 负载均衡策略

名称 说明
轮询 默认方式,每个请求按时间顺序逐一分配到不同的后端服务器。如果后端服务器down掉,能自动剔除。
weight 权重方式,默认为1,权重越高,被分配的客户端请求就越多
ip_hash 依据ip分配方式,这样每个访客可以固定访问一个后端服务
least_conn 依据最少连接方式,把请求优先分配给连接数少的后端服务
url_hash 依据url分配方式,这样相同的url会被分配到同一个后端服务
fair 依据响应时间方式,响应时间短的服务将会被优先分配

具体配置方式:

powershell 复制代码
//轮询:
upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

//weight:
upstream webservers{
    server 192.168.100.128:8080 weight=90;
    server 192.168.100.129:8080 weight=10;
}

//ip_hash:
upstream webservers{
    ip_hash;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

//least_conn:
upstream webservers{
    least_conn;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

//url_hash:
upstream webservers{
    hash &request_uri;
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
}

//fair:
upstream webservers{
    server 192.168.100.128:8080;
    server 192.168.100.129:8080;
    fair;
}

server{
    listen 80;
    server_name localhost;
    
    location /api/{
        proxy_pass http://webservers/admin;#负载均衡
    }
}

nginx 故障转移和主从服务的配置方式

在Nginx中配置多个后端服务器作为upstream时,当某个后端服务器出现故障时,Nginx会自动将请求转发到其他健康的后端服务器。

具体配置方式:

powershell 复制代码
upstream webservers{
    server 192.168.100.128:8080 fail_timeout=60s max_fails=2; 
    server 192.168.100.129:8080 fail_timeout=60s max_fails=2;
}

upstream  webservers{ 
    server 192.168.100.128:8080 ;
	//加上backup的时候,指明是从服务器,一旦主服务器挂了之后,就会启用从服务器,主服务器恢复时调用主服务器
    server 192.168.100.129:8080 BACKUP;
}
相关推荐
Pythonliu72 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我2 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
小O_好好学3 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥4 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
苹果醋34 小时前
快速玩转 Mixtral 8x7B MOE大模型!阿里云机器学习 PAI 推出最佳实践
spring boot·nginx·毕业设计·layui·课程设计
john_hjy4 小时前
11. 异步编程
运维·服务器·javascript
x晕x4 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人4 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou3690986555 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
北京智和信通5 小时前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控