Nginx入门

Nginx简介

常见的Web服务器

Web服务器也称为WWW服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。

Unix和Linux平台下常用的Web服务器有以下几种:

  • Apache
  • Nginx
  • Lighttpd
  • Tomcat
  • IBM WebSphere

其中应用最广泛的是Apache。

嗯,但是我们这篇文章的主角是Nginx,所以如果有同学想了解Apache的话,可以去自己查询相关资料。

Nginx诞生

Nginx是俄罗斯人Igor Sysoev编写的一款高性能的HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。于2004年10月4日发布第一个公开版本1.0,开源协议是类BSD许可协议,目前最新版本是1.15.0(2018-06-05发布)

选择理由

支持高并发链接

官方测试Nginx能够支持5万并发连接,在实际生产环境中可以支撑2~4万并发连接数。这得益于Nginx使用了最新的epoll(Linux2.6内核)和kqueue(freebsd)网络I/O模型.

内存消耗少
成本低廉

开源软件,可以免费使用,并且可以用于商业用途

配置文件非常简单
支持Rewrite重写规则

能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组

内置的健康检查功能

如果Nginx Proxy后端的某个Web服务器宕机了,不会影响前端访问

节省带宽

支持GZIP压缩,可以添加浏览器本地缓存的Header头

稳定性高

用于反向代理,宕机的概率微乎其微

支持热部署

可以在不间断服务的情况下对软件版本进行升级

Nginx安装配置

pcre安装

pcre是一个正则表达式库,让nginx支持rewrite需要安装这个库。

下载地址

https://ftp.pcre.org/pub/pcre/

常用支持库安装

在CentOS安装软件的时候,可能缺少一部分支持库,而报错。这里首先安装系统常用的支持库。那么在安装的时候就会减少很多的错误的出现。

1
# yum install -y gcc gdb strace gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs patch e2fsprogs-devel krb5-devel libidn libidn-devel openldap-devel nss_ldap openldap-clients openldap-servers libevent-devel libevent uuid-devel uuid mysql-devel
gcc安装

检查是否安装了g++、gcc。rpm -qa | grep gcc 之后需要出现3个包如下图所示。

如果没有出现。需要安装g++、gcc。

1
# yum install gcc-c++
上传pcre安装包到/usr/local/soft/pcre下
解压压缩包
1
2
# cd /usr/local/soft/pcre
# tar -zxvf pcre.tar.gz
配置
1
2
# cd pcre
# ./configure
编译
1
# make
安装
1
# make install

Nginx安装

判断系统是否安装了zlib-devel
1
# rpm -qa | grep zlib-devel

如果未安装,则使用yum进行安装

下载

http://nginx.org/en/download.html

下载稳定版本,不要下载最新版本

解压
1
# tar -zxvf nginx-1.14.0.tar.gz
配置

将软件安装在/usr/local/webserver目录下

1
2
# cd nginx-1.14.0
# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/var/server/soft/pcre
编译和安装
1
2
# make
# make install
检查是否安装成功
1
2
# cd /usr/local/webserver/nginx/sbin
# ./nginx -t

显示以下内容表示安装成功

1
2
nginx: the configuration file /usr/local/webserver/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/webserver/nginx/conf/nginx.conf test is successful