nginx 模块介绍及安装过程

nginx 在 linux 的编译安装,以及 nginx 的基本介绍

nginx 读音 “engine x”,是一个高性能的 http 服务器和反向代理服务器,同时也是一个 POP3\IMAP\SMTP 反向代理服务器,由俄罗斯的 Igor Sysoev 所开发,为俄罗斯的访问量第二的 rambler.ru 开发。

nginx 是一款轻量级的 web 服务器和反向代理服务器,也是一个 POP3\IMAP\SMTP 的代理服务器。其特点是占用内存少,并发能力强,国内的很多站都在使用 nginx ,像 BAT,都在使用,以及在基于自己的业务在 nginx 进行二次开发的。

nginx 可以在绝大多数的 unix like 系统上运行,并且也有 windows 的移植版本,nginx 占用内存少,并发能力强,是 apache 不错的替代产品,nginx 选择了使用 epool and kqueue 做为开发模型。并且 nginx 的配置文件,也很轻量,很简单。

今天就来讲一下安装。nginx 主要分为两个版本,即稳定版和开发版,两者有什么区别呢,也就是字面的上的意思,稳定版是很稳定的,适合于正式的生产环境,而开发版,包含了很多新的功能和体验,但可能会有出现一些的 bug,所以对于生产环境来讲,使用稳定版最好。

nginx 中使用 pcre 正规表达式,所以就需要 pcre 的库,pcre 可以通过 yum 或者 apt-get 来安装,也可以下载源代码编译安装,本次讲解的源代码编译安装。

先安装开发环境,以下命令是 CentOS Redhat 系统安装,使用 yum

yum -y install gcc gcc-c++ openssl openssl-devel ncurses ucurses-devel make

如果是 ubuntu debian 等系统,则使用 apt-get

apt-get update
apt-get install gcc g++ openssl libssl-dev libncurses5 libncurses5-dev make

pcre 下载

wget -c ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz

安装 pcre

tar -zxvf pcre-8.39.tar.gz
cd pcre-8.39
./configure
make
make install

下载 nginx ,可以在 nginx.org 官网下载,本次使用 1.10.1 稳定版本

cd
wget -c http://nginx.org/download/nginx-1.10.1.tar.gz

安装 nginx 之前,先简单的介绍一下 nginx 的模块,nginx 的模块呢,分为四类,一类是核心模块,一类是标准模块,一类是可选模块,一类是第三方模块。其中核心模块是必须要有的,标准模块是默认编译进 nginx 的,除非通过 ./configure 去明确的禁止他们编译进去。而可选模块默认是不编译进 nginx 的,需要使用 ./configure 明确指定。

具体可以见下表:

 

Nginx 核心模块

这些模块是必须的。

名称 说明
Main 配置错误日志、进程、权限等。
Events 配置epoll、kqueue、select、poll等。

标准 HTTP 模块

这些模块是默认均被编译进去的,除非通过configure明确地禁用它们。

名称 说明 版本 禁用选项
Core 控制端口、location、错误页、别名和其他必要配置。 –without-http
Access 基于客户端IP地址允许/拒绝Http请求。 –without-http_access_module
Auth Basic Basic HTTP 认证。 –without-http_auth_basic_module
Auto Index 自动为没有索引页面的目录生成文件列表。 –without-http_autoindex_module
Browser 翻译”User-Agent” 字符串。 0.4.3 –without-http_browser_module
Charset 对Web页面重新编码。 –without-http_charset_module
Empty GIF 在内存中生成一个高1像素、宽1像素的GIF图片,并对外提供服务。 0.3.10 –without-http_empty_gif_module
FastCGI 提供对FastCGI的支持。 –without-http_fastcgi_module
Geo 通过IP地址的键值对来设置配置参数。 0.1.17 –without-http_geo_module
Gzip 支持使用Gzip压缩响应内容。 –without-http_gzip_module
Headers 可以设定任意的HTTP响应头。
Index 控制将哪些文件作为索引页面。
Limit Requests 限定客户端创建连接的频率。 0.7.20 –without-http_limit_req_module
Limit Zone 限定客户端同时建立连接的最大数。从1.1.8起不再推荐使用,建议使用 Limit Conn。 0.5.6 –without-http_limit_zone_module
Limit Conn 通过配置参数限定客户端的最大并发连接数。 –without-http_limit_conn_module
Log 可以定制访问日志。
Map 以键值对的方式设定任意配置参数。 0.3.16 –without-http_map_module
Memcached 支持Memcached。 –without-http_memcached_module
Proxy 代理上级服务器。 –without-http_proxy_module
Referer 基于RefererHTTP请求头对请求进行过滤。 –without-http_referer_module
Rewrite 使用正则表达式对请求进行重写。 –without-http_rewrite_module
SCGI 支持SCGI协议。 0.8.42 –without-http_scgi_module
Split Clients 基于某些条件将客户端分类。 0.8.37 –without-http_split_clients_module
SSI 支持服务器端的include。 –without-http_ssi_module
Upstream 支持负载均衡。 –without-http_upstream_ip_hash_module (ip_hash directive only)
User ID 发行用户身份标识cookie。 –without-http_userid_module
uWSGI 支持uWSGI协议。 0.8.40 –without-http_uwsgi_module
X-Accel 类X-Sendfile模块。

可选 HTTP 模块

下面的模块必须在编译时为 configure 明确地设定相应的启用选项。

名称 说明 版本 启用选项
Addition 可以为页面追加文本。 –with-http_addition_module
Degradation 允许当剩余内存较低时对某些位置的请求返回 204 或 404 状态码。 0.8.25 –with-http_degradation_module
Embedded Perl 允许在配置文件中使用 Perl。 0.3.21 –with-http_perl_module
FLV 支持 Flash视频(Flash Streaming Video)。 0.4.7 –with-http_flv_module
GeoIP 根据来自 MaxMind 的 GeoIP 二进制文件中的信息创建变量。 0.8.6, 0.7.63 –with-http_geoip_module
Google Perftools 支持 Google 性能工具。 0.6.29 –with-google_perftools_module
Gzip Precompression 提供预压缩的静态文件。 0.6.23 –with-http_gzip_static_module
Image Filter 支持使用 Libgd 对图片进行变换。 0.7.54 –with-http_image_filter_module
MP4 允许对 mp4 流进行寻址。 1.1.3, 1.0.7 –with-http_mp4_module
Random Index 允许使目录索引随机化。 0.7.15 –with-http_random_index_module
Real IP 允许将 nginx 作为后端服务器。 0.3.8 –with-http_realip_module
Secure Link 允许通过密钥保护指定的文件。 0.7.18 –with-http_secure_link_module
SSL 支持 HTTPS/SSL。 –with-http_ssl_module
Stub Status 提供查看服务器统计信息的能力。 0.1.18 –with-http_stub_status_module
Substitution 可以替换页面中的文本。 –with-http_sub_module
WebDAV 支持 WebDAV 穿透。 0.3.38 –with-http_dav_module
XSLT 允许对页面使用 XSLT 进行后处理。 0.7.8 –with-http_xslt_module

邮件模块

名称 说明 配置参数
Core 使 Nginx 能够处理/代理 IMAP、POP3、SMTP协议。 –with-mail
–without-mail_pop3_module
–without-mail_imap_module
–without-mail_smtp_module
Auth 使用 Nginx 为邮件服务进行认证。
Proxy 使 Nginx 能够代理 IMAP、POP3、SMTP协议。
SSL 该模块可以让 POP3/IMAP/SMTP 使用 SSL/TLS。 –with-mail_ssl_module

第三方模块和补丁

可以参考 nginx 官网的说明,安装第三方模块的时候,使用 --add-module=第三方模块路径 即可

此表摘自 开源中国bonnya 的博客。可点击这里查看

这个图的版要可能会有点老了,具体可以执行 ./configure --help 来查看。

./configure --help

添加 运行 nginx 的用户

useradd -M -s /sbin/nologin nginx

安装 nginx

tar -zxvf nginx-1.10.1
cd nginx-1.10.1
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_sub_module --with-pcre=/root/pcre-8.39

这里指定了运行 nginx 的用户和组,并指定 /usr/local/nginx 为 nginx 的安装目录,启用 stub ,这是一个统计 nginx 状态的信息,在后面我会更新到,启用 ssl 模块,如果你的网站使用 https ,则一定要启用,gzip 启用 gzip 模块,提供预压缩的静态文件。这里还指定了一个 –with-pcre,在 pcre 编译时,如果指定了 prefix 为非系统常规目录,则需要穿上参数,一般是不需要的。需要特别注意的是:这个如果指定 –with-pcre,则路径要指定我们刚刚解压出来的那个 pcre 包的源码包路径,而不是 安装后的路径。

编译,编译成功后,并安装

make
make install

安装成功后,目录位于我们指定的 prefix 参数的后面的路径,我们可以看一下这个目录下都有什么文件,使用 tree 命令,若提示命令找不到,可以使用 yum 或者 apt-get 来安装

[root@localhost nginx-1.10.1]# tree /usr/local/nginx/
/usr/local/nginx/
├── conf
│   ├── fastcgi.conf
│   ├── fastcgi.conf.default
│   ├── fastcgi_params
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types
│   ├── mime.types.default
│   ├── nginx.conf
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default
│   ├── uwsgi_params
│   ├── uwsgi_params.default
│   └── win-utf
├── html
│   ├── 50x.html
│   └── index.html
├── logs
└── sbin
└── nginx

4 directories, 18 files
[root@localhost nginx-1.10.1]#

这里可以看到一共有4个文件夹,分别为confhtmllogssbin

其中,conf 存放 nginx 的配置文件,html 为 nginx 默认的网页文档存放目录,logs 是 nginx 的日志存放目录,sbin 是 nginx 执行文件的存放目录。

下面来启动 nginx ,在启动之前 ,最好是测试一下配置文件,是否有语法之类的错误,保持这个习惯,是一个不错的选择。

/usr/local/nginx/sbin/nginx 是 nginx 的执行文件,可以使用 -h 查看帮助,其用法也非常简单,

[root@localhost nginx-1.10.1]# cd
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]#

这里的, -t 是测试配置文件是否有错误,而 -c 是指定配置文件,若不指定 -c 选项,则使用默认的配置文件 conf/nginx.conf

这里提示的 syntax ok 以及 test is successful ,则代表配置文件没有问题,下面就可以启动了,启动命令如下。

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

若是没有任何信息,则表示是启动成功了,可以查看进程,以及端口号

[root@localhost ~]# ps -ef | grep nginx
root 20598 1 0 05:26 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx 20599 20598 0 05:26 ? 00:00:00 nginx: worker process
root 20601 1993 0 05:26 pts/0 00:00:00 grep nginx
[root@localhost ~]# netstat -antupl | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 20598/nginx
[root@localhost ~]#

可以看到进程里已经有了 nginx ,80 端口也已经打开了,下面就可以使用浏览器来访问了,会显示 welcome to nginx 的字样,表示安装已经成功。

若不是能访问,检测一下防火墙,以及 selinux ,这里简单的说一下处理方法:

临时关闭 selinux (重启失效)

setenforce 0

关闭防火墙

/etc/init.d/iptables stop

不关闭防火墙,而是放行

iptables -I INPUT 1 --dport 80 -j ACCEPT

nginx 的安装,就讲到这里了,配置文件,在后面,我会继续讲到

 

猜您喜欢