轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
权重Weight
upstream backServer{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8081 weight=2;
}
server {
listen 80;
server_name www.your.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer;
index index.html index.htm;
}
}
IP绑定ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。俗称IP绑定。
upstream backServer{
server 127.0.0.1:8080 ;
server 127.0.0.1:8081 ;
ip_hash;
}
server {
listen 80;
server_name www.your.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer;
index index.html index.htm;
}
}
当上游服务器(我们真实访问的服务器),一旦访问时出现故障或者是没有及时相应的话,nginx可以帮助我们直接轮训到下一台服务器,进而保证服务器的高可用。
Nginx配置代码:
server {
listen 80;
server_name www.your.com;
location / {
### 指定上游服务器负载均衡服务器
proxy_pass http://backServer;
###nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 1s;
###nginx发送给上游服务器(真实访问的服务器)超时时间
proxy_send_timeout 1s;
### nginx接受上游服务器(真实访问的服务器)超时时间
proxy_read_timeout 1s;
index index.html index.htm;
}
}
Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。
Rewrite全局变量
last - 基本上都用这个Flag。
break - 中止Rewirte,不在继续匹配
redirect - 返回临时重定向的HTTP状态302
permanent - 返回永久重定向的HTTP状态301
Nginx Rewrite如何301跳转 如:将me.cn
跳转到www.your.cn
server {
listen 80;
server_name www.your.cn me.cn
;
if ($host != 'www.your.cn' ) {
rewrite ^/(.*)$ http://www.your.cn/$1 permanent;
}
}
判断IP地址来源
## 如果访问的ip地址为192.168.5.165,则返回403
if ($remote_addr = 192.168.5.166) {
return 403;
}
限制浏览器访问
## 不允许谷歌浏览器访问 如果是谷歌浏览器返回500
if ($http_user_agent ~ Chrome) {
return 500;
}