Fork me on GitHub

nginx编译安装

准备工作

下载nginx的安装包,解压

安装Nginx

yum -y install pcre pcre-devel openssl openssl-devel (安装依赖,以CentOS为例)

cd ./nginx-1.11.9

./configure 
--prefix=/usr/local/nginx 
--sbin-path=/usr/local/nginx/sbin/nginx 
--conf-path=/usr/local/nginx/nginx.conf 
--pid-path=/usr/local/nginx/nginx.pid 
--http-log-path=/data/nginx/access.log 
--error-log-path=/data/nginx/error.log 
--with-http_ssl_module 
--with-debug
...

./configure  --prefix=/usr/local/nginx  --with-http_ssl_module 
make && make install //编译并安装

以本地nginx环境为例(Mac OS X),添加module:

--prefix=/opt/local/var/run/nginx 
--sbin-path=/opt/local/sbin/nginx 
--conf-path=/opt/local/etc/nginx/nginx.conf 
--pid-path=/opt/local/var/run/nginx/nginx.pid 
--http-log-path=/opt/local/var/log/nginx/access.log 
--error-log-path=/opt/local/var/log/nginx/error.log 
--with-http_ssl_module 
--with-debug 
--add-module=/Users/jason/Sites/nginx-1.11.9/echo-nginx-module

安装依赖:

Ubuntu:

apt-get install libpcre3 libpcre3-dev 
apt-get install openssl libssl-dev
apt-get install zlib1g-dev

CentOS:

yum install openssl openssl-devel
yum install pcre-devel
yum install zlib-devel

常用编译选项说明

Nginx在编译时,运行期中与路径相关的各种参数

--prefix=PATH                        #指向安装目录
--sbin-path=PATH                     #指向(执行)程序文件(nginx)
--conf-path=PATH                     #指向配置文件(nginx.conf)
--error-log-path=PATH                #指向错误日志目录
--http-log-path=PATH                 #指定访问复制目录
--pid-path=PATH                      #指向pid文件(nginx.pid)
--lock-path=PATH                     #指向lock文件(nginx.lock)(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
--builddir=PATH                      #指向编译目录
--http-client-body-temp-path=PATH    #设定http客户端请求临时文件路径
--http-proxy-temp-path=PATH          #设定http代理临时文件路径
--http-fastcgi-temp-path=PATH        #设定http fastcgi临时文件路径
--http-uwsgi-temp-path=PATH          #设定http uwsgi临时文件路径
--http-scgi-temp-path=PATH           #设定http scgi临时文件路径

--user=USER                          #指定程序运行时的非特权用户
--group=USER                         #指定程序运行时的非特权用户组

--with-rtsig_module                  #启用rtsig模块支持(实时信号)
--with-file-aio                      #启用file aio支持(一种APL文件传输格式)
--with-ipv6                          #启用ipv6支持
--with-select_module                 #启用select模块支持(一种轮询模式,不推荐在高载环境下使用)禁用:--without-select_module
--with-poll_module                   #启用poll模块支持(功能与select相同,与select特性相同,为一种轮询模式,不推荐在高载环境下使用)
--with-http_ssl_module               #启用支持https请求,需已安装openssl
--with-http_realip_module            #启用ngx_http_realip_module支持(这个模块允许从请求标头更改客户端的IP地址值,默认为关)
--with-http_addition_module          #启用ngx_http_addition_module支持(作为一个输出过滤器,支持不完全缓冲,分部分响应请求)
--with-http_xslt_module              #启用ngx_http_xslt_module支持(过滤转换XML请求)
--with-http_image_filter_module      #启用支持传输JPEG/GIF/PNG 图片过滤,默认为不启用,gd库要用到
--with-http_sub_module               #启用ngx_http_sub_module支持(允许用一些其他文本替换nginx响应中的一些文本)
--with-http_dav_module               #启用ngx_http_dav_module支持(增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法)
--with-http_flv_module               #启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
--with-http_gzip_static_module       #启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
--with-http_random_index_module      #启用ngx_http_random_index_module支持(从目录中随机挑选一个目录索引)
--with-http_secure_link_module       #启用ngx_http_secure_link_module支持(计算和检查要求所需的安全链接网址)
--with-http_degradation_module       #启用ngx_http_degradation_module支持(允许在内存不足的情况下返回204或444码)
--with-http_stub_status_module       #启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
--with-http_perl_module              #启用ngx_http_perl_module支持(该模块使nginx可以直接使用perl或通过ssi调用perl)

--with-mail                          #启用POP3/IMAP4/SMTP代理模块支持
--with-mail_ssl_module               #启用ngx_mail_ssl_module支持
--add-module=                        #启用外部模块支持
--with-cpu-opt=                      #指定编译的CPU,可用的值为: pentium,opteron, amd64, sparc32, sparc64, ppc64等
--with-pcre                          #启用pcre库(默认会自动去找rpm包安装的pcre库文件以及模块)
--with-pcre=                         #指向pcre库文件目录(如果是源码安装就需要指定,rpm包安装就不需要指定了)
--with-pcre-opt=                     #在编译时为pcre库设置附加参数
--with-perl_modules_path=            #设定perl模块路径
--with-perl=                         #设定perl库文件路径
--with-debug                         #启用debug日志

默认启用的选项(等同于默认启用的模块)

--without-http                            #该模块用于http server功能
--without-http-cache                    #该模块用于http cache功能
--without-http_charset_module            #该模块用于重新编码web页面,但只能是一个方向--服务器端到客户端,并且只有一个字节的编码可以被重新编码
--without-http_gzip_module                #该模块同-with-http_gzip_static_module功能一样
--without-http_ssi_module                #该模块提供了一个在输入端处理处理服务器包含文件(SSI)的过滤器,目前支持SSI命令的列表是不完整的
--without-http_userid_module            #该模块用来处理用来确定客户端后续请求的cookies
--without-http_access_module            #该模块提供了一个简单的基于主机的访问控制。允许/拒绝基于ip地址
--without-http_auth_basic_module        #该模块是可以使用用户名和密码基于http基本认证方法来保护你的站点或其部分内容
--without-http_autoindex_module            #该模块用于自动生成目录列表,只在ngx_http_index_module模块未找到索引文件时发出请求
--without-http_geo_module                #该模块用于创建一些变量,其值依赖于客户端的IP地址
--without-http_map_module                #该模块用于使用任意的键/值对设置配置变量
--without-http_referer_module           #该模块用来过滤请求,拒绝报头中Referer值不正确的请求
--without-http_rewrite_module           #该模块允许使用正则表达式改变URI
--without-http_proxy_module             #该模块用于代理服务器
--without-http_fastcgi_module           #该模块允许Nginx与FastCGI进程交互,并通过传递参数来控制FastCGI进程工作,FastCGI一个常驻型的公共网关接口
--without-http_uwsgi_module             #该模块启用uwsgi协议,uWSGI服务器相关
--without-http_scgi_module              #该模块用来启用SCGI协议支持,SCGI协议是CGI协议的替代,它是一种应用程序与HTTP服务接口标准
--without-http_memcached_module         #该模块用来提供简单的缓存,以提高系统效率
--without-http_limit_zone_module        #该模块可以针对条件,进行会话的并发连接数控制
--without-http_limit_req_module         #该模块允许你对于一个地址进行请求数量的限制用一个给定的session或一个特定的事件
--without-http_empty_gif_module         #该模块在内存中常驻了一个1*1的透明GIF图像,可以被非常快速的调用)
--without-http_browser_module           #该模块用来创建依赖于请求报头的值
--without-http_split_clients_module     #该模块用来基于某些条件划分用户。条件如:ip地址、报头、cookies等等
--without-http_upstream_ip_hash_module  #该模块用于负载均衡
--without-mail_pop3_module              #该模块用于pop3协议,邮局协议
--without-mail_imap_module              #该模块用于邮件的imap协议,邮件接收协议
--without-mail_smtp_module              #该模块用于smtp协议,邮件发送协议

添加模块(以添加echo模块为例)

1、下载echo模块echo-nginx-module
2、安装echo模块

cd ./nginx-1.11.9

./configure
--prefix=/opt/local/var/run/nginx 
--sbin-path=/opt/local/sbin/nginx 
--conf-path=/opt/local/etc/nginx/nginx.conf 
--pid-path=/opt/local/var/run/nginx/nginx.pid 
--http-log-path=/opt/local/var/log/nginx/access.log 
--error-log-path=/opt/local/var/log/nginx/error.log 
--with-http_ssl_module 
--with-debug 
--add-module=/Users/jason/Sites/nginx-1.11.9/echo-nginx-module

make //不必make install,否则就是覆盖

3、替换已安装的nginx二进制文件

cp /opt/local/sbin/nginx /opt/local/sbin/nginx.bak
cp ./objs/nginx /opt/local/sbin/nginx
轻轻的我走了,正如我轻轻的来