反向代理与负载均衡概念简介
严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?
普通负载均衡软件,例如大名鼎鼎的LVS,其实功能只是对请求数据包的转发(也可能会改写数据包),传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不一样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。
一句话,LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。
Nginx是七层结构的,通过nginx本身来转发,可以有多种方式进行负载均衡,实现的功能多,nginx可以分业务
LVS是四层结构的,通过转发数据包mac或ip头部,不能对数据进行修改,来实现的负载均衡,实现的功能少但效率高,LVS的WEB内容都给是一样的
实现Nginx负载均衡的组件主要有两个,如下表
反向代理与负载均衡搭建
硬件准备
准备3台VM虚拟机(有物理服务器更佳)都需要安装Nginx服务
Nginx反向代理
NginxWebA
NginxWebB
安装依赖软件包
yum -y install openssl openssl-devel pcre pcre-devel
rpm -qa openssl openssl-devel pcre pcre-devel
三台都需要安装支持包
软件包准备
nginx-1.10.2.tar.gz
安装Nginx服务
useradd -M -s /sbin/nologin nginx
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nginx-1.10.2
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ --->软链接可做可不做
egrep -v "#|^$" nginx.conf.default > nginx.conf --->把配置文件多余的东西过滤掉
这里只编译了一个截图,三台虚拟机的步骤都是一样的
简单的Nginx反向代理配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream www_server {
server 192.168.200.68:80 weight=1;
server 192.168.200.69:80 weight=1;
}
server {
listen 80;
server_name sl.yunjisuan.com;
location / {
proxy_pass http://www_server;
反向代理与负载均衡概念简介
严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?
普通负载均衡软件,例如大名鼎鼎的LVS,其实功能只是对请求数据包的转发(也可能会改写数据包),传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不一样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。
一句话,LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。
Nginx是七层结构的,通过nginx本身来转发,可以有多种方式进行负载均衡,实现的功能多,nginx可以分业务
LVS是四层结构的,通过转发数据包mac或ip头部,不能对数据进行修改,来实现的负载均衡,实现的功能少但效率高,LVS的WEB内容都给是一样的
实现Nginx负载均衡的组件主要有两个,如下表
反向代理与负载均衡搭建
硬件准备
准备3台VM虚拟机(有物理服务器更佳)都需要安装Nginx服务
Nginx反向代理
NginxWebA
NginxWebB
安装依赖软件包
yum -y install openssl openssl-devel pcre pcre-devel
rpm -qa openssl openssl-devel pcre pcre-devel
三台都需要安装支持包
软件包准备
nginx-1.10.2.tar.gz
安装Nginx服务
useradd -M -s /sbin/nologin nginx
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nginx-1.10.2
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ --->软链接可做可不做
egrep -v "#|^$" nginx.conf.default > nginx.conf --->把配置文件多余的东西过滤掉
这里只编译了一个截图,三台虚拟机的步骤都是一样的
简单的Nginx反向代理配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream www_server {
server 192.168.200.68:80 weight=1;
server 192.168.200.69:80 weight=1;
}
server {
listen 80;
server_name sl.yunjisuan.com;
location / {
proxy_pass http://www_server;
反向代理与负载均衡概念简介
严格地说,Nginx仅仅是作为Nginx Proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果,所以本文称之为Nginx负载均衡。那么,反向代理和负载均衡有什么区别呢?
普通负载均衡软件,例如大名鼎鼎的LVS,其实功能只是对请求数据包的转发(也可能会改写数据包),传递,其中DR模式明显的特征是从负载均衡下面的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户,而反向代理就不一样了,反向代理接收访问用户的请求后,会代理用户重新发起请求代理下的节点服务器,最后把数据返回给客户端用户,在节点服务器看来,访问的节点服务器的客户端用户就是反向代理服务器了,而非真实的网站访问用户。
一句话,LVS等的负载均衡是转发用户请求的数据包,而Nginx反向代理是接收用户的请求然后重新发起请求去请求其后面的节点。
Nginx是七层结构的,通过nginx本身来转发,可以有多种方式进行负载均衡,实现的功能多,nginx可以分业务
LVS是四层结构的,通过转发数据包mac或ip头部,不能对数据进行修改,来实现的负载均衡,实现的功能少但效率高,LVS的WEB内容都给是一样的
实现Nginx负载均衡的组件主要有两个,如下表
反向代理与负载均衡搭建
硬件准备
准备3台VM虚拟机(有物理服务器更佳)都需要安装Nginx服务
Nginx反向代理
NginxWebA
NginxWebB
安装依赖软件包
yum -y install openssl openssl-devel pcre pcre-devel
rpm -qa openssl openssl-devel pcre pcre-devel
三台都需要安装支持包
软件包准备
nginx-1.10.2.tar.gz
安装Nginx服务
useradd -M -s /sbin/nologin nginx
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nginx-1.10.2
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ --->软链接可做可不做
egrep -v "#|^$" nginx.conf.default > nginx.conf --->把配置文件多余的东西过滤掉
这里只编译了一个截图,三台虚拟机的步骤都是一样的
简单的Nginx反向代理配置文件
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream www_server {
server 192.168.200.68:80 weight=1;
server 192.168.200.69:80 weight=1;
}
server {
listen 80;
server_name sl.yunjisuan.com;
location / {
proxy_pass http://www_server;
配置文件详解:upstream >>服务器池 www_server>>服务器池的名字可随意
- weight >>权重。负载均衡是按照权重比例分配
- 配置服务器A的配置
server {
listen 80;
server_name bbs.yunjisuan.com;
location / {
root html/bbs;
index index.html index.htm;
server {
listen 80;
server_name sl.yunjisuan.com;
location / {
root html/sl;
index index.html index.htm;
- 默认的就没有添加,A和B一样
-
填充测试文件
mkdir /usr/local/nginx/html/{sl,bbs}
echo "`hostname -I ` sl" >> /usr/local/nginx/html/sl/index.html
echo "`hostname -I ` bbs" >> /usr/local/nginx/html/bbs/index.html
WEBB跟WEBA测试文件是一样的
加入A和B的本地映射 -
Nginx upstream模块介绍
Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass,fastcgi_pass,memcached_pass等,新版Nginx软件支持的方式有所增加。本文主要讲解proxy_pass代理方式。
ngx_http_upstream_module模块允许Nginx定义一组或多组节点服务器组,使用时可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应Upstream组的名字上,具体写法为“proxy_pass http:// www_server_pools”,其中www_server_pools就是一个Upstream节点服务器组名字。ngx_http_upstream_module模块官方地址为:http://nginx.org/en/docs/http/ngx_http_upstream_module.html