云盘项目(二)——Nginx反向代理与负载均衡

Nginx概述

Nginx是俄罗斯的程序设计师Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的开源服务器软件,Nginx完全使用C语言编写,可以作为一台高性能的web服务器、反向代理服务器和邮件代理服务器使用。

在高连接并发的场合,Nginx是Apache商业服务器不错的替代品。

Nginx的优点很多,总结起来就是:高并发下响应请求更快、低耦合设计带来的高可扩展性、高可靠性、低内存消耗、高并发连接数、不间断服务的热部署、开放源码等。

Nginx使用起来比较简单,经过简单的配置文件的修改,就可以将主机配置成一台web服务器、一台反向代理服务器或者是一台邮件代理服务器。

反向代理和负载均衡

在配置Nginx反向代理服务器之前,还是先来说说什么是反向代理服务器吧。

其实,反向代理服务器可以类比为租房市场上的中介,客户端或者浏览器就是房客,而web服务器就是房东,当房客想找房的时候,由于种种原因,没有直接去找房东,而是向中介咨询,然后中介把手里面合适的房源推给房客。

反向代理服务器也是这样,反向代理服务器代理了多台提供相同服务的web服务器(web服务器集群以提高服务器的处理能力),当客户端或者浏览器向web服务器发送请求时,请求被发送到了反向代理服务器上,反向代理服务器再把请求转发给代理的web服务器中的某一台,为客户端服务。

为什么叫反向代理呢?其实可以简单理解为:反向代理服务器为web服务器服务的,典型用途是将防火墙后面的服务器提供给Internet用户访问,还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务;而代理是为客户端服务的,典型用途是为在防火墙内的局域网客户端提供访问Internet的途径,比如常见的VPN代理,还可以使用缓冲特性减少网络使用率。

反向代理服务器就是客户端请求的调度者,对负载(工作任务,请求)进行平衡、分摊到每个Web服务器,从而协同完成工作任务,这个过程就被称之为负载均衡。通过配置Nginx反向代理服务器,就能自然地实现负载均衡。

Ubuntu上Nginx的安装与配置

Nginx的安装

在正式安装Nginx之前,还需要安装Nginx的三个依赖库:OpenSSL、PCRE和ZLib。其中,OpenSSL用于数据的加密,PCRE用于解析正则表达式,而ZLib用来进行文件的压缩和解压缩。gcc\g++编译器用来进行编译安装也是必备的。

tips:这些库的安装包都可以在官网下载,其中有些链接试了wget用不了,需要的可以微信公众号【德古拉的杂货铺】后台发送“Nginx等安装包”获取。

1、gcc\g++编译器安装

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential
sudo apt-get install libtool

2、PCRE库源码安装

#wget http://downloads.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gz
tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39/
./configure
make
sudo make install

3、ZLib库源码安装

tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8/
./configure
make
sudo make install

4、OpenSSL库源码安装

tar -zxvf openssl-1.0.1t.tar.gz
cd openssl-1.0.1t/
./config
make
sudo make install

5、Nginx源码安装

tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1/
./configure
make
sudo make install

安装好了之后就可以测试一下Nginx是否正确安装了,默认情况下Nginx被安装在目录/usr/local/nginx下。

其中Nginx的配置文件存放在conf/nginx.conf中,bin命令是/sbin目录下的nginx文件。

  • 默认方式启动Nginx

    sudo /usr/local/nginx/sbin/nginx

    这时,Nginx会自动读取配置文件/usr/loacl/nginx/conf/nginx.conf,并运行;

  • 查看浏览器
    在浏览器搜索栏输入本机的IP,就能看到“Welcome to nginx”,表示Nginx已经安装并运行成功,此时默认配置为一台简单的web服务器。

  • Nginx服务的关闭

    #强制关闭
    sudo /usr/local/nginx/sbin/nginx -s stop
    #优雅关闭
    sudo /usr/local/nginx/sbin/nginx -s quit

  • 运行中的Nginx服务器重新部署

    sudo /usr/local/nginx/sbin/nginx -s reload

Nginx反向代理服务器的配置

配置反向代理服务器需要修改Nginx的配置文件,配置文件中的层次关系大致如下:
在这里插入图片描述
main中主要是Nginx在运行时与具体业务功能无关的参数,比如工作进程数、运行身份等;
http提供http服务相关的参数,比如keepalive、gzip等;
server是http服务上支持若干虚拟机,每个虚拟机一个对应的server配置项,配置项里包含该虚拟机相关的配置;
location是http服务中,某些特定的URL对应的一系列配置项;
mail是实现email相关的SMTP/IMAP/POP3代理时,共享的一些配置项,在这里就不谈了。
在这里插入图片描述
用上图这样一个配置实例来简单介绍一下反向代理服务器的配置方法。

反向代理服务器代理了两台web服务器,这两台web服务器也可以使用Nginx进行配置,这里就不谈了,主要说一下反向代理服务器的配置流程。

在这里插入图片描述
server_name对应的是浏览器访问的域名:localhost;
当有用户请求该域名时,代理服务器会去location /中去寻找;
在location中设置代理:proxy url;
这里的url可以是随意的一个链接,通过这个url,代理服务器去upstream模块寻找web服务器;
所有的web服务器的地址都在upstream里边,默认情况下每个web服务器被请求的机会均等,也可以设置权重weight修改访问机率。

这样,一台Nginx反向代理服务器就配置好了,当部署完成之后,通过浏览器访问“localhost”,实际替浏览器服务的,会是两台web服务器中随机的一台,机会均等。

结束语

Nginx被国内很多互联网公司使用,包括百度、腾讯、淘宝、新浪等,Nginx经常被用来做反向代理,作为web服务器使用时一般用来处理静态请求。

更多细节可以参考官方文档http://nginx.org/en/docs/
和淘宝团队翻译的文档http://tengine.taobao.org/nginx_docs/cn/docs/.

也欢迎大家关注「德古拉的杂货铺」公众号
第一时间获取杂货铺的
想法灵感和好文章推荐

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值