点击蓝字
关注我们
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 gccsudo apt-get install g++sudo apt-get install build-essentialsudo apt-get install libtool2、PCRE库源码安装
#wget http://downloads.sourceforge.net/project/pcre/pcre/8.39/pcre-8.39.tar.gztar -zxvf pcre-8.39.tar.gzcd pcre-8.39/./configuremakesudo make install3、ZLib库源码安装
tar -zxvf zlib-1.2.8.tar.gzcd zlib-1.2.8/./configuremakesudo make install4、OpenSSL库源码安装
tar -zxvf openssl-1.0.1t.tar.gzcd openssl-1.0.1t/./configmakesudo make install5、Nginx源码安装
tar -zxvf nginx-1.10.1.tar.gzcd nginx-1.10.1/./configuremakesudo 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 reloadNginx反向代理服务器的配置
配置反向代理服务器需要修改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服务器使用时一般用来处理静态请求。
更多细节可以参考官方文档
和淘宝团队翻译的文档
近期部分相关文章推荐
Python与经典排序算法
Python与经典查找算法
DP与DFS:分割回文串
windows加固脚本
从暴力递归到动态规划--正则表达式的匹配
fastDFS分布式文件系统的搭建
也欢迎大家关注「德古拉的杂货铺」
第一时间获取杂货铺的
想法灵感和好文章推荐
喜欢请戳一戳右下角