Nginx
一、nginx简介
nginx(发音同engine x)是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、nginx优点
- 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数
- 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)
- 配置文件非常简单:风格跟程序一样通俗易懂
- 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
- 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组
- 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问
- 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头
- 稳定性高:用于反向代理,宕机的概率微乎其微
- 模块化设计:模块可以动态编译
- 外围支持好:文档全,二次开发和模块较多
- 支持热部署:可以不停机重载配置文件
- 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化
三、nginx反向代理
多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
1. 反向代理的作用
- 保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
- 负载均衡,通过反向代理服务器来优化网站的负载
2. 正向代理和反向代理的区别
- 在正向代理中,Proxy和Client同属于一个LAN,隐藏了客户端信息
- 在反向代理中,Proxy和Server同属于一个LAN,隐藏了服务端信息
四、nginx安装与配置
1. 下载
进入http://nginx.org/en/download.html下载,本人使用的是nginx-1.8.1版本,如图:
2. 安装
2.1 安装环境
安装nginx需要如下环境:
2.1.1 gcc
编译依赖gcc环境,如果没有gcc环境,需要安装gcc
yum install gcc-c++
2.1.2 PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
2.1.3 zlib
lib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
2.1.4 openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的**和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
2.2 编译安装
将nginx-1.8.1.tar.gz
拷贝至linux服务器
解压,并进入解压后的文件:
tar -zxvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
执行如下命令,配置:
./configure
开始编译和安装:
make
make install
安装成功查看安装目录,如下:
2.3 启动nginx
启动:
cd /usr/local/nginx/sbin/
./nginx
查看:
ps -aux | grep nginx
其中13612为Nginx的主进程id,worker process为Nginx的工作进程
2.4 重启nginx
cd /usr/local/nginx/sbin
./nginx -s reload
2.5 测试安装成功
访问对应安装Nginx的linux的ip,出现如下界面即安装成功:
注意
:如果出现访问失败,很可能是因为80端口没有开放,进行如下配置开启端口:
vim /etc/sysconfig/iptables
复制一行,端口改为80,如下:
重启iptables:
service iptables restart
四、搭建负载均衡
1. 什么是负载均衡
负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
2. 负载均衡的优点
简单的来说。可以减少服务器的压力,将原本一台服务器所要承受的访问量分给了多台,并提高了项目的可用性,当一台服务器挂掉的时候也不会导致整个项目瘫痪。
3. nginx实现负载均衡
3.1 准备工作
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至 tomcat服务器。
nginx负载均衡服务器:192.168.14.129
tomcat1服务器:192.168.14.131
tomcat2服务器:192.168.14.134
我们将两个相同的项目分别放到了131与134服务器中,当我们通过129负载访问项目接口时,nginx会自动将请求轮流分配给131与134来执行。
3.2 配置
以vim模式打开nginx.conf配置文件:
cd /usr/local/nginx/conf/
vim nginx.conf
根据上边的需求在nginx.conf文件中配置负载均衡,如下:
#在server上添加此upstream节点
upstream mytomcat{
#分权 即访问131与134的次数比例为1比1
server 192.168.14.131:8080 weight=1;
server 192.168.14.134:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#即所有请求都到这里去找分配
location / {
#使用mytomcat分配规则,即刚自定义添加的upstream节点
proxy_pass http://mytomcat;
}
}
配置完成,保存并退出,重启nginx。
3.3 测试结果
多次访问此接口
http://192.168.14.129/student/getInfo
,通过后台日志我们发现两个服务器的接口分别轮流被调用,这样一个简单的负载就搭建完成了。
推荐阅读
-
nginx rewrite常用示例
-
nginx geoip 模块实现地区性负载均衡
-
使Nginx支持ThinkPHP框架_PHP教程
-
nginx学习笔记
-
ubuntu编译安装php5 mysql nginx_MySQL
-
Centos 6.5 搭建php环境(nginx+mariadb+php7),centosnginx
-
lnmp一键安装环境中nginx开启pathinfo,lnmpnginx_PHP教程
-
网站安全配置Nginx防止网站被攻击(包括使用了CDN加速之后的配置方法)
-
svn使用钩子文件将文件更新到web目录,提示'Skipped /var/www/nginx/html'
-
nginx 404页面处理以及pathInfo和隐藏index.php总述