nginx反向代理和负载均衡

反向代理与负载均衡概念简介

严格地说,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反向代理配置文件

 
  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. upstream www_server {
  11. server 192.168.200.68:80 weight=1;
  12. server 192.168.200.69:80 weight=1;
  13. }
  14. server {
  15. listen 80;
  16. server_name sl.yunjisuan.com;
  17. location / {
  18. 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反向代理配置文件

     
    1. worker_processes 1;
    2. events {
    3. worker_connections 1024;
    4. }
    5. http {
    6. include mime.types;
    7. default_type application/octet-stream;
    8. sendfile on;
    9. keepalive_timeout 65;
    10. upstream www_server {
    11. server 192.168.200.68:80 weight=1;
    12. server 192.168.200.69:80 weight=1;
    13. }
    14. server {
    15. listen 80;
    16. server_name sl.yunjisuan.com;
    17. location / {
    18. 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反向代理配置文件

      1. worker_processes 1;
      2. events {
      3. worker_connections 1024;
      4. }
      5. http {
      6. include mime.types;
      7. default_type application/octet-stream;
      8. sendfile on;
      9. keepalive_timeout 65;
      10. upstream www_server {
      11. server 192.168.200.68:80 weight=1;
      12. server 192.168.200.69:80 weight=1;
      13. }
      14. server {
      15. listen 80;
      16. server_name sl.yunjisuan.com;
      17. location / {
      18. proxy_pass http://www_server;
      19. 配置文件详解:upstream >>服务器池   www_server>>服务器池的名字可随意
      20. weight >>权重。负载均衡是按照权重比例分配
      21. 配置服务器A的配置
        1. server {
        2. listen 80;
        3. server_name bbs.yunjisuan.com;
        4. location / {
        5. root html/bbs;
        6. index index.html index.htm;
        7. server {
          1. listen 80;
          2. server_name sl.yunjisuan.com;
          3. location / {
          4. root html/sl;
          5. index index.html index.htm;
          6. 默认的就没有添加,A和B一样
          7. 填充测试文件

             
            1. mkdir /usr/local/nginx/html/{sl,bbs}
            2. echo "`hostname -I ` sl" >> /usr/local/nginx/html/sl/index.html
            3. echo "`hostname -I ` bbs" >> /usr/local/nginx/html/bbs/index.html

            WEBB跟WEBA测试文件是一样的

             加入A和B的本地映射
          8. 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

原文地址:https://www.cnblogs.com/xuruqing/p/9995647.html