首页 > 代码库 > Nginx反向代理和负载均衡部署指南
Nginx反向代理和负载均衡部署指南
nginx不单能够作为强大的webserver,也能够作为一个反向代理server,并且nginx还能够依照调度规则实现动态、静态页面的分离。能够依照轮询、ip哈希、URL哈希、权重等多种方式对后端server做负载均衡,同一时候还支持后端server的健康检查。
假设仅仅有一台server时,这个server挂了,那么对于站点来说是个灾难.因此。这时候的负载均衡就会大显身手了,它会自己主动剔除挂掉的server.
Nginx负载均衡一些基础知识:
下面是详细使用步骤:nginx 的 upstream眼下支持 4 种方式的分配
1)、轮询(默认)
每一个请求按时间顺序逐一分配到不同的后端server,假设后端serverdown掉。能自己主动剔除。
2)、weight
指定轮询几率。weight和訪问比率成正比,用于后端server性能不均的情况。
2)、ip_hash
每一个请求按訪问ip的hash结果分配,这样每一个訪客固定訪问一个后端server,能够解决session的问题。
3)、fair(第三方)
按后端server的响应时间来分配请求。响应时间短的优先分配。
4)、url_hash(第三方)
1. 安装
1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本号(眼下是1.5.13版本号)安装包。
2) 解压后拷贝到部署文件夹。
2. 启动和停止Nginx
Nginx眼下仅仅支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署文件夹。
1) 启动Nginx:start nginx
2) 停止Nginx:nginx -s stop
3) 改动配置后重新启动:nginx -s reload
这三个命令可分别做成bat文件,放在部署文件夹下,方便兴许操作。
start nginx.bat文件内容:start nginx
stop nginx.bat文件内容:nginx -s stop
reload nginx.bat文件内容:nginx -s reload
3. 反向代理配置
改动部署文件夹下conf子文件夹的nginx.conf文件(如nginx-1.5.13\conf\nginx.conf)内容,可调整相关配置。
反向代理配置演示样例:
location / {
#设置主机头和client真实地址,以便server获取client真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#禁用缓存
proxy_buffering off;
#设置反向代理的地址
proxy_pass http://192.168.1.1;
}
代理地址依据实际情况改动。
4. 负载均衡配置
nginx 的 upstream默认是以轮询的方式实现负载均衡,这样的方式中,每一个请求按时间顺序逐一分配到不同的后端server,假设后端serverdown掉。能自己主动剔除。
第二种方式是ip_hash:每一个请求按訪问ip的hash结果分配,这样每一个訪客固定訪问一个后端server,能够解决session的问题。
负载均衡配置演示样例:
upstream backend {
#ip_hash;
server 192.168.1.251;
server 192.168.1.252;
server 192.168.1.247;
}
server {
listen 80;
server_name trffweb;
location / {
#反向代理的地址
proxy_pass http://backend;
}
}
Upstream命名和server地址依据实际情况改动。
5. 完整配置演示样例
nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
#ip_hash;
server 192.168.1.251;
server 192.168.1.252;
server 192.168.1.247;
}
server {
listen 80;
server_name 2;
location / {
#设置主机头和client真实地址,以便server获取client真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#禁用缓存
proxy_buffering off;
#反向代理的地址
proxy_pass http://backend;
}
}
}
Nginx反向代理和负载均衡部署指南