Nginx配置负载均衡(upstream)+反向代理(httpproxy)
2015-04-02 23:36
337 查看
首先准备3台机器(当然是vm虚拟机),一台用来做负载均衡服务器,2台web服务,分别都安装上nginx,怎么安装nginx这里就不在叙述。
IP规划 => 负载均衡服务器:10.1.1.10 | web-1:10.1.1.11 | web-2:10.1.1.12
另外为了测试的顺利请在之前先把3台机器的防火墙都关掉,把web-1和web-2的index.html改成不同内容(比如本机IP)后面访问的时候好看效果。
以下配置均在 nginx.conf中进行
server 10.1.1.11 weight=1;
server 10.1.1.12 weight=1;
}
注:upstream配置应在http内,server外,webservers这是个标识,由自己定义,供后续使用。weigth:权重 ,值越大,被重定向到的几率越大
location / { #proxy实现反向代理
proxy_pass http://webservers; #这里的webservers就是上面定义的,将请求转发到上面upstream中配置的ip上
proxy_set_header X-Real-IP $remote_addr; #将请求源ip塞到header头中的X-Real-IP上转发到web服务器上,此句作用为了使web服务器能获取客户端请求的真实IP
}
real_ip_header X-Real-IP;
注:加这2行配置后才能获取到访问请求的真实IP,不然永远拿到的都是负载均衡服务器的IP,此配置需要在编译nginx的时候加上 --with-http_realip_module 参数才能成功,否则失败。
在浏览器里面输入负载均衡服务器的ip,刷新就会看到页面内容来回变化,说明请求在2台web服务器之间切换,达到分流、均衡请求的目的
是不是很简单,赶紧去试一把,瞬间就让你逼格提升不少哦 (*^__^*)
后记:对于已经安装了nginx的机器,可通过命令: /nginx安装目录/sbin/nginx -V 查看编译参数,如果没有加 --with-http_realip_module 这个编译参数,可以在源码包下面重新加上这个参数编译,configure后make(不要make install),然后拷贝objs下面的nginx覆盖现有的nginx既可
IP规划 => 负载均衡服务器:10.1.1.10 | web-1:10.1.1.11 | web-2:10.1.1.12
另外为了测试的顺利请在之前先把3台机器的防火墙都关掉,把web-1和web-2的index.html改成不同内容(比如本机IP)后面访问的时候好看效果。
以下配置均在 nginx.conf中进行
负载均衡服务器配置
upstream webservers { //upstream实现负载均衡server 10.1.1.11 weight=1;
server 10.1.1.12 weight=1;
}
注:upstream配置应在http内,server外,webservers这是个标识,由自己定义,供后续使用。weigth:权重 ,值越大,被重定向到的几率越大
location / { #proxy实现反向代理
proxy_pass http://webservers; #这里的webservers就是上面定义的,将请求转发到上面upstream中配置的ip上
proxy_set_header X-Real-IP $remote_addr; #将请求源ip塞到header头中的X-Real-IP上转发到web服务器上,此句作用为了使web服务器能获取客户端请求的真实IP
}
web服务器配置
set_real_ip_from 10.1.1.10; #负载均衡服务器IPreal_ip_header X-Real-IP;
注:加这2行配置后才能获取到访问请求的真实IP,不然永远拿到的都是负载均衡服务器的IP,此配置需要在编译nginx的时候加上 --with-http_realip_module 参数才能成功,否则失败。
测试
配置完后nginx.conf后,输入命令:/nginx安装目录/sbin/nginx -t 测试一把看看配置是否正确,没错误就启动nginx在浏览器里面输入负载均衡服务器的ip,刷新就会看到页面内容来回变化,说明请求在2台web服务器之间切换,达到分流、均衡请求的目的
是不是很简单,赶紧去试一把,瞬间就让你逼格提升不少哦 (*^__^*)
后记:对于已经安装了nginx的机器,可通过命令: /nginx安装目录/sbin/nginx -V 查看编译参数,如果没有加 --with-http_realip_module 这个编译参数,可以在源码包下面重新加上这个参数编译,configure后make(不要make install),然后拷贝objs下面的nginx覆盖现有的nginx既可
相关文章推荐
- Tengine 中 ngx_http_accesskey 在反向代理中 如何和HTTP_PROXY配合使用
- node插件http-proxy实现反向代理
- nginx(六)反向代理(proxy)与负载均衡(upstream)以及健康状态监测。
- nginx_http_proxy_module,实现反向代理及缓存功能
- 80-nginx_http_proxy,upstream,stream模块简析
- 反向代理、ngx_http_upstream_module模块
- node-http-proxy修改响应结果
- Nginx HTTP负载均衡和反向代理配置
- Nginx proxy_set_header中$proxy_host,$host,$http_host的区别
- Tiny HTTP Proxy in Python
- nginx修改upstream不重启的方法(ngx_http_dyups_module模块)
- convert ssh tunnel to http proxy
- Java HttpURLConnection使用proxy访问url
- Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Request"
- nginx http proxy
- Android MediaPlayer与Http Proxy结合之优化篇
- Android MediaPlayer与Http Proxy结合之基础篇
- nginx的proxy模块及upstream模块介绍
- cocos2d-x-LuaProxy学习日志(5) -- Http网络交互
- tornado http proxy 二級代理