nginx学习笔记-配置篇之反向代理&负载均衡

目的

通过使用nginx反向代理多个服务器上的后台服务,达到对外域名发布,对内负载的功能。要求:使用hosts中修改的ip与域名的映射关系,访问www.wg.cn能访问服务,如下:
在这里插入图片描述

一、准备

1、hosts配置

修改机器上的hosts文件,增加以下信息:
在这里插入图片描述
在cmd中使用ipconfig /flushdns使修改生效。

2、后台服务准备

之前做过的一个视频播放服务的管理页面作为本次测试的后台服务,通过在不同机器上部署视屏播放服务的登录管理来测试nginx的反向代理功能。
我在虚拟机1虚拟机2上部署了登录管理服务,并且服务已经启动。
在这里插入图片描述在这里插入图片描述

二、nginx反向代理配置

整个nginx的安装过程不再详细说明,具体安装过程查看 nginx编译安装 ,配置文件路径/usr/local/nginx/conf,nginx.conf中13、14、15行为模块化配置的一部分,同样在路径/usr/local/nginx/conf下。
在这里插入图片描述
下面配置中涉及到具体IP地址的后一位均使用x代替(虽然是虚拟机)

1、nginx.conf的配置信息:
user nginx nginx; ## Default: nobody
worker_processes 5; ## Default: 1
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 8192;

events {
  # use [ kqueue | epoll | /dev/poll | select | poll ];
  use epoll;
  worker_connections 4096; ## Default: 1024
}

http {
  include /usr/local/nginx/conf/mime.types;
  include /usr/local/nginx/conf/proxy.conf;
  # include /usr/local/nginx/conf/fastcgi.conf;
  index index.html index.htm index.php;

  default_type application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] $status '
  '"$request" $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log logs/access.log main;
  sendfile on;
  tcp_nopush on;
  server_names_hash_bucket_size 128; # this seems to be required for some vhosts

  upstream proxy_service {
    server 172.20.36.4x:8080 max_fails=2 fail_timeout=30s ;
	server 172.20.36.4x:8080 max_fails=1 fail_timeout=30s ;
  }

  server {
    listen 80;
    server_name wg.cn www.wg.cn;
    access_log logs/wg.access.log main;
    location / {
      proxy_pass http://proxy_service;
    }
  }
}
nginx配置说明:
a、28行 upstream proxy_service “上游”模块配置

语法:server address [ parameters ] 默认为轮询方式负载,除此还有:权重负载weight,权重越大,被访问概率越大;ip_hash负载;fair负载(第三方),按照服务器访问响应时间负载;url_hash负载(第三方),按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例子:

  • 权重负载
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}
  • ip_hash 负载
upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}
  • fair负载
upstream backserver {
    server server1;
    server server2;
    fair;
}
  • url_hash
upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}

proxy_serviceupstream的名称,花括号内简单理解就是负载的服务器列表,29行使用的是轮询负载方式,表示 负载机器1的IP172.20.36.4x:8080,最大失败次数2,失败超时时间30s

b. 33行server配置模块

listen 80; 表示监听的是80端口
server_name 表示 服务的虚拟主机名称为wg.cn www.wg.cn
root和localtion 表示静态文件的路径,虽然在这个地方配置了,但是这个反向代理中并不会使用到,后续我们再用到时仔细研究

2、mime.types配置信息
types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    application/font-woff                            woff;
    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}
3、proxy.conf配置信息
proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;

三、测试

1、2个后台服务都正常时
  • 步骤一 重新加载配置启动nginx:/usr/local/nginx/sbin/nginx -s reload
  • 步骤二 在浏览器地址中输入: http://www.wg.cn/
  • 结果
    A.前端页面

在这里插入图片描述
B.后台服务日志
在这里插入图片描述
在这里插入图片描述

2、1个服务宕机,另一个正常时

A.前端页面
在这里插入图片描述
B.后台服务日志
在这里插入图片描述

3、结论

通过上面2个测试结果的分析,我们达到了nginx反向代理的功能:
a> 对用户不可见的服务
b> 负载均衡

参考引用:
nginx中gzip配置
nginx安装及配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值