Nginx反向代理的原理优点:

反向代理可以简单的理解为:代理服务器来接收internet上的服务器请求,然后将请求转发给内部的服务器上,然后将结果返回给internet上请求的客户端,所以代理服务器对外表现出来的只是一台服务器。反向代理服务器也称为Web服务器加速,针对web服务器提供加速功能。他作为代理服务器,并不针对浏览器用户,而是针对一台或者多台特定的web服务器。可以缓存web的页面,降低web服务器的访问量,从而来降低web服务器的负载,实施反向代理,只要将反向代理设备放置在一台或多台Web服务器前端即可。当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是代理服务器的IP地址,而非原始Web服务器的IP地址,这时代理服务器设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被转载到反向代理服务上。不但能够很大程度上减轻web服务器的负担,提高访问速度,而且能够防止外部网主机直接和web服务器直接通信带来的安全隐患。

Nginx proxy是Nginx的王牌功能,利用proxy基本可以实现一个完整的7层负载均

衡,它有这 些特色:

1. 功能强大,性能卓越,运行稳定。

2. 配置简单灵活。

3. 能够自动剔除工作不正常的后端服务器。

4. 上传文件使用异步模式。

5. 支持多种分配策略,可以分配权重,分配方式灵活

项目拓扑:

配置环境:

三台CentOS6.2X86  1台做Nginx Proxy  2台Apache做页面测试服务器

配置步骤:

在安装之前首先解决依赖包的问题,pcre-devel openssl zlib-devel

一、安装nginx服务器

1.       后台的web服务我们使用的是Apache服务,关于Apache的安装部署我们在这里就不做详细说明了,我们的重点在nginx方向代理怎么配置。

2.       安装Nginx服务

  1. yum -y install make
  2. yum -y install pcre pcre-devel openssl-devel zlib-devel gcc gcc-c++
  3. mkdir /usr/local/site/nginx -p
  4. useradd -s /sbin/nologin www
  5. rpm -qa | grep httpd
  6. ./configure --prefix=/usr/local/site/nginx/ --user=www --group=www  \ 指定Nginx用户组
  7. --with-http_stub_status_module  \  非核心模块,获取从上次开启之后Nginx的状态
  8. --with-http_ssl_module    开启SSL模块
  9. make && make install

3.       修改nginx主配置文件,主配置文件路径:/usr/local/site/nginx/conf/nginx.conf,最好配置文件作下备份;

  1. user  www;                                 指定nginx的运行用户,
  2. worker_processes  1;              指定线程,默认情况下Nginx是单线程运行,
  3. #error_log  logs/error.log;    日志模块
  4. #error_log  logs/error.log  notice;
  5. #error_log  logs/error.log  info;
  6. #pid        logs/nginx.pid;            //inx主进程ID
  7. events {
  8. user epoll;        //inx的高效模式;
  9. worker_connections  65535;                   //文件最大的连接数;
  10. }
  11. http {
  12. include       mime.types;                     //置文件模块;
  13. default_type  application/octet-stream;             //核心配置文件模块;
  14. sendfile        on;                      //开启高效传输模式;
  15. tcp_nopush     on;                       //防止网络端口阻塞;
  16. #keepalive_timeout  0;
  17. keepalive_timeout  65;
  18. #gzip  on;                  //开启压缩模块,需要注意的是在配置文件中开启之后是不生效的,还需要加载gzip模块
  19. server {
  20. listen       80;               //监听的80端口
  21. server_name  proxy.rsyslog.net;        //指定代理服务器的域名
  22. location / {
  23. root   html;                 //配置文件所在的目录,这里是相对路径
  24. index  index.html index.htm;    //页面文件的类型;
  25. }
  26. error_page  404              /404.html;         //相关错误提示页面
  27. error_page   500 502 503 504  /50x.html;
  28. location = /50x.html {
  29. root   html;
  30. }
  31. }
  32. }

然后重启服务测试服务是否正常,links proxy.rsyslog.net 域名需要在dns服务器上配置正确

Nginx支持不间断运行,启动的命令

kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

查看Nginx服务状态,确定正常之后我们来配置Nginx Proxy,查看Nginx端口

  1. [root@localhost conf]# ps -ef | grep nginx
  2. root     27276     1  0 15:53 ?        00:00:00 nginx: master process ./nginx
  3. www      27315 27276  0 16:03 ?        00:00:00 nginx: worker process
  4. root     27317 25195  0 16:05 pts/0    00:00:00 grep nginx

二、配置Nginx 反向代理服务器,反向代理服务器的配置如下;需要修改两个两个地方,在HTTP字段里面修改和Server字段中修改,在下图中只把需要添加的文件列出来即可。

  1. http {
  2. include       mime.types;
  3. default_type  application/octet-stream;
  4. client_max_body_size 300m;             //允许客户端请求的最大的单个文件字节数
  5. client_body_buffer_size 128k;        //缓存区代理用户端文件字节数
  6. client_body_temp_path /dev/shm/client_body_temp;     //请求试图写入到缓存文件的目录路径
  7. proxy_connect_timeout600;              //和后端服务器连接的超时时间,
  8. proxy_read_timeout 600;                  //连接成功等待后端相应的时间,默认是60S
  9. proxy_send_timeout 600;             //后端服务器的回传时间,规定服务器在一定的时间内传送完。
  10. proxy_buffer_size 16k;                  //代理服务器的缓存文件头部文件大小,默认是4K
  11. proxy_buffers 4 32k;                    //后端真是服务器的数量和大小
  12. proxy_busy_buffers_size 64k;            //当系统忙事,申请更大proxy_buffer
  13. proxy_temp_file_write_size 64k;         //写入临时目录的文件大小
  14. proxy_temp_path /dev/shm/proxy_temp;    //指定一个目录来缓存比较大的代理请求
  15. 如下是HTTP负载均衡模块upstream 指定设置一群服务器,服务器可以指定不同的权重,默认为1。Nginx支持5种方式的查询,
  16. 1、  轮询 Nginx默认的查询方式
  17. 2、  Weight 指定分配的轮询方式,根据后端服务器的性能来做权重,在此案例中我们使用这种方式来轮询的
  18. 3、  Ip_hash 每个请求按照ip的hash结果分配,这样每个IP地址就可以固定的访问后端的一台服务器,解决了session的问题
  19. 4、  Fair 第三方模块,这个原理是按照响应时间的优先来分配的,
  20. 5、  url_hash    按照url的hash结果来分配请求,使每个url定向到同一个后端的服务器;
  21. upstream cluster {
  22. server 192.168.100.238:80 weight=8 max_fails=2 fail_timeout=30s;
  23. server 192.168.100.248:80 weight=8 max_fails=2 fail_timeout=30s;
  24. }
  25. server {
  26. listen       80;
  27. server_name  localhost;
  28. location / {
  29. root   html;
  30. index  index.html index.htm;
  31. proxy_pass http://cluster/;       //指定需要代理的URL,
  32. proxy_redirect off;         //如果需要从后端打开location和Refresh字段,可以开启。
  33. proxy_set_header X-Real-IP $remote_addr;           //允许将发送到后端的服务器请求重新定义或者增加一个字段,这个可以是变量也是文本组合。
  34. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;      //联系下面PS中所写,在后端web中就算加上$http_x_Forwarded_for这条,也得不到用户的IP,所以在nginx反向代理添加Header头信息 X-Forwarded-For在配合后端服务器日志文件的$http_x_Forwarded_for这条就可以获得用户的IP地址了。
  35. proxy_set_header Host $host;               //首先说明 proxy_set_header 指令在向反向代理的后端Web服务器发起请求时添加指定的 Header头信息,后端web服务器有多个基于域名的虚拟主机时,通过头信息Host,用于指定请求的域名,这样后端web才能识别反向代理请求哪个虚拟主机处理。
  36. proxy_next_upstream error timeout invalid_header http_500 http_502 http_503
  37. http_504 http_404; 服务器头部超时相应的各种状态
  38. }
  39. }
  40. }

配置完成之后平滑重启Nginx服务

  1. kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

三、测试,刷新测试能正常进行负载,可以根据自己的环境来对nginx proxy的设置轮询模式;

本文转自devilangel 51CTO博客,原文链接:http://blog.51cto.com/devliangel/1142008,如需转载请自行联系原作者

使用Nginx反向代理来实现简单的负载均衡相关推荐

  1. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  2. Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...

    Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fe ...

  3. Nginx 反向代理、动静分离、负载均衡及配置实例

    文章目录 Nginx 代理 正向代理 反向代理 配置实例 动静分离 概念 配置实例 负载均衡 概念 分配策略 配置实例 Nginx Nginx ("engine x") 是一个高性 ...

  4. Nginx运维之一 反向代理、动静分离、负载均衡

    Nginx运维之一 反向代理.动静分离.负载均衡 Nginx简述 Nginx 优势功能 Tengine 反向代理 正向代理 反向代理 动静分离 负载均衡 Nginx简述 Nginx是lgor Syso ...

  5. Nginx代理——正向、反向代理,动静分离和负载均衡

    文章目录 一.Nginx代理概述 (1)什么是正向代理和反向代理 -正向代理: -反向代理 -反向代理和正向代理的区别 (2)配置代理 -Nginx代理配置语法 -配置正向代理 -Nginx反向代理示 ...

  6. Nginx配置文件说明-反向代理,动静分离,负载均衡

    #user nobody;#开启进程数 <=CPU数 worker_processes 1;#错误日志保存位置 #error_log logs/error.log; #error_log log ...

  7. Nginx 基本概念(反向代理、动静分离、负载均衡、高可用)、安装配置(JDK\Tomcat\Nginx\Keepalived)、配置实例效果

    这篇文章将先阐述Nginx相关概念,然后介绍Nginx相关环境的安装配置过程(包括Linux下JDK\Tomcat的安装,都是自己动手操作的记录),及反向代理.负载均衡.动静分离.高可用的配置及测试过 ...

  8. nginx 反向proxy多个 tomcat,负载均衡

    负载均衡 一,正向proxy与反向proxynginx 二,nginx安装 三,nginx负载均衡 场景 四,配置nginx访问代理多个tomcat 一,正向proxy与反向proxynginx 正向 ...

  9. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

最新文章

  1. windows10上使用一个tomcat部署2个项目
  2. 简单介绍基于PostgreSql 别名区分大小写的问题
  3. 软件开发环境-工具集
  4. 在JavaScript中逐个遍历数组?
  5. 诺奖团队最新研究:独居太久容易睡眠不足、暴饮暴食 | Nature
  6. 记一次理想浪漫的毕旅
  7. 服务器操作系统与安装步骤,服务器操作系统与安装步骤
  8. 31销售是让用户用到货真价实的产品
  9. RTX5 | 时间延时
  10. 能量谱与功率谱(转自百度文库与维基百科)
  11. 在安卓上运行 TensorFlow:让深度学习进入移动端
  12. 计算机系统的组成一般不包括,建筑设备监控子系统组成一般不包括( )A.中央计算机系统B.布线系统C.DDCD.各类传感器及执 - 作业在线问答...
  13. canvas基础学习笔记
  14. 如何将计算机硬盘导出,移动硬盘坏了怎么导出数据?这几点一定要牢记!
  15. STM32F103C8T6在Arduino框架下驱动SH1106 1.3“ IIC OLED显示
  16. 【GNSS】GREAT多频多系统GREAT-UPD开源代码-第4.1章 代码解读之gnss.h/gnss.cpp
  17. 2022爱分析・出海数字化系列报告之“出海实时互动与通信”厂商全景报告 | 爱分析报告
  18. make: *** No targets specified and no makefile found. Stop.错误解决办法
  19. linux 应用层gpio中断_linux下GPIO中断驱动US100传感器--Apple的学习笔记
  20. U-boot启动流程(Linux内核)的分析(四)

热门文章

  1. 程序一旦发觉写得不理想,那就得重构它
  2. Oracle正则表达式的用法
  3. linux部署redis集群遇到的问题
  4. scanf和printf在c语言中的作用,C语言中的scanf与printf
  5. android 滚动列表框,建立滚动列表框
  6. oracle 内存分配,Oracle调优修改10g,11g内存分配
  7. c语言printf %llo,c++ - Printf疯狂了 - 堆栈内存溢出
  8. redis linux 运行依赖,在Ubuntu系统下安装Redis Desktop Manager的方法
  9. mysql referential_constraints_hibernate4.3.8与spring mvc结合遇到的问题
  10. python 案例串接_Python基础系例--字典串操作