nginx反向代理和负载均衡
反向代理与负载均衡概念简介
严格地说,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负载均衡的组件主要有两个,如下表
![负债均衡组件。.png-45.9kB]()
反向代理与负载均衡搭建
硬件准备
准备3台VM虚拟机(有物理服务器更佳)都需要安装Nginx服务
Nginx反向代理
NginxWebA
NginxWebB
![image_1crp57ne91mjek0c1q9v1js41iahs.png-6.8kB]()
安装依赖软件包
yum -y install openssl openssl-devel pcre pcre-devel
rpm -qa openssl openssl-devel pcre pcre-devel
三台都需要安装支持包
![image_1crp58vobfo7pno7v71usl9pq19.png-20.2kB]()
软件包准备
nginx-1.10.2.tar.gz
![image_1crp5ad1rtscc221q9v1hm51j9v1m.png-10.5kB]()
安装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 --->把配置文件多余的东西过滤掉
这里只编译了一个截图,三台虚拟机的步骤都是一样的
![image_1crp6k368e75d611ho2oud9mm9.png-51.9kB]()
简单的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负载均衡的组件主要有两个,如下表
![负债均衡组件。.png-45.9kB]()
反向代理与负载均衡搭建
硬件准备
准备3台VM虚拟机(有物理服务器更佳)都需要安装Nginx服务
Nginx反向代理
NginxWebA
NginxWebB
![image_1crp57ne91mjek0c1q9v1js41iahs.png-6.8kB]()
安装依赖软件包
yum -y install openssl openssl-devel pcre pcre-devel
rpm -qa openssl openssl-devel pcre pcre-devel
三台都需要安装支持包
![image_1crp58vobfo7pno7v71usl9pq19.png-20.2kB]()
软件包准备
nginx-1.10.2.tar.gz
![image_1crp5ad1rtscc221q9v1hm51j9v1m.png-10.5kB]()
安装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 --->把配置文件多余的东西过滤掉
这里只编译了一个截图,三台虚拟机的步骤都是一样的
![image_1crp6k368e75d611ho2oud9mm9.png-51.9kB]()
简单的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.htmlecho "`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

浙公网安备 33010602011771号