Nginx配置反向代理与负载均衡
本文默认你已经知道如何安装nginx,并且知道nginx的简单配置和常用命令,当然,你肯定也知道修改完配置文件后重启相应环境
概念理解
反向代理
当我们有一个服务器集群,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集群服务器的时候无法访问,必须通过第三方服务器才能访问集群
这个时候,我们通过第三方服务器访问服务器集群的内容,但是我们并不知道是哪一台服务器提供的内容,此种代理方式称为反向代理
负载均衡
公司会建立很多的服务器,这些服务器组成了服务器集群,然后,当用户访问网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入选择的服务器
所以,用户每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况
小结
nginx会给你分配服务器压力小的去访问
实现步骤
用户访问网站的时候首先会访问nginx服务器,然后nginx服务器再从服务器集群中选择压力较小的服务器,将该访问请求引向该服务器
反向代理
更改nginx配置文件server
块内容
nginx反向代理主要通过proxy_pass
来配置,将你项目的开发机地址填写到proxy_pass
后面,正常的格式为proxy_pass URL
即可
server {
listen 80;
location / {
proxy_pass http://server_ip:port;
}
}
##########################################################################################
注解:
关键语句
proxy_pass http://server_ip:port;
负载均衡
Upstream模块实现负载均衡
ip_hash
指令
server
指令
upstream
指令
// 修改nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream upstream_name {
server server_ip1:port;
server server_ip2:port;
}
server {
listen 8080;
location / {
proxy_pass http://upstream_name;
}
}
}
##########################################################################################
upstream模块解释:
- 负载均衡就靠它
- 语法格式:upstream upstream_name {}
- 里面写的两个server分别对应着不同的服务器
server模块解释:
- 实现反向代理
- listen监督端口号
- location / {}访问根路径
- proxy_pass http://upstream_name,代理到upstream_name里两个服务器上
注意事项:
upstreeam后面的名称一定要与proxy_pass后面的名称相同
每次刷新都会访问不同的服务器,这样就做到了负载均衡处理
不过,更应该做到的是当用户第一次访问到其中一台服务器后,下次再访问的时候就直接访问该台服务器就好了,不用总变化了。那么就发挥了ip_hash
的威力了
// 省略...
upstream firstdemo {
ip_hash;
server server_ip1:port;
server server_ip2:port;
}
ip_hash它的作用是如果第一次访问该服务器后就记录,之后再访问都是该服务器了,这样比如第一次访问是server_ip1
服务器,那之后再访问也会分配为server_ip1
服务器访问了
每次修改完nginx配置后不要忘记重启nginx才能生效
本文只是简单配置,如需更详细的配置,请自行百度
nginx配置文件详解
参考文章