1、安装依赖包
1)、pcre (Perl Compatible Regular Expressions)
用来支持正则表达式。Nginx的
下载地址:
安装方式:
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.44.tar.gz # 具体版本可以视具体要求可定
$ tar -zxf pcre-8.44.tar.gz
$ cd pcre-8.44
$ ./configure
$ make
$ sudo make install
2)、zilb
支持头(header)压缩。Nginx
安装方式:
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make
$ sudo make install
3)、OPENSSL
支持HTTPS协议。Nginx
下载地址:
https://www.openssl.org/source/
安装方式:
$ wget http://www.openssl.org/source/openssl-1.1.1g.tar.gz
$ tar -zxf openssl-1.1.1g.tar.gz
$ cd openssl-1.1.1g
$ ./Configure darwin64-x86_64-cc --prefix=/usr
$ make
$ sudo make install
2、下载Nginx源码包
具体要使用的版本,也是视具体需求来定。
$ wget https://nginx.org/download/nginx-1.19.0.tar.gz
$ tar zxf nginx-1.19.0.tar.gz
$ cd nginx-1.19.0
3、编译安装
1)、编译示例
$ ./configure
--prefix=/usr/local/nginx
--sbin-path=/usr/local/nginx/nginx
--conf-path=/usr/local/nginx/nginx.conf
--pid-path=/usr/local/nginx/nginx.pid
--with-pcre=../pcre-8.44
--with-zlib=../zlib-1.2.11
--with-http_ssl_module
--with-stream
--with-mail=dynamic
--add-module=/usr/build/nginx-rtmp-module
--add-dynamic-module=/usr/build/3party_module
参数 | 描述 |
---|---|
--prefix=<PATH> | Nginx文件目录,默认:/usr/local/nginx |
--sbin-path=<PATH> | Nginx可执行文件,默认:**/sbin/nginx |
--conf-path=<PATH> | Nginx配置文件,可以在nginx命令行中,使用-c <FILENAME>指定运行。默认:**conf/nginx.conf |
--pid-path=<PATH> | Nginx Pid文件,默认:**/logs/nginx.pid |
--error-log-path=<PATH> | Nginx错误日志文件,默认:**/logs/error.log |
--http-log-path=<PATH> | Nginx HTTP请求日志文件:**/logs/access.log |
--user=<NAME> | Nginx工作进程使用的非权限用户名称,默认:nobody |
--group=<NAME> | Nginx工作进程使用的用户组,默认:--user参数指定 |
--with-pcre=<PATH> | PCRE库路径 |
--with-pcre-jit | 支持PCRE库的“just-in-time compilation” |
--with-zlib=<PATH> | ZLIB库路径 |
2)、增加/删除nginx模块
# 增加新模块
--without-<MODULE-NAME>
# 删除模块
--without-<MODULE-NAME>
模块名称 | 描述 |
---|---|
http_access_module | 接收或者禁止指定客户端IP地址 |
http_auth_basic_module | 支持用户名和密码的HTTP基础认证协议 |
http_autoindex_module | 处理以前斜杠字符(/)结尾的请求,并生成目录列表 |
http_browser_module | 创建变量,其值依赖于User-Agent请求头的值 |
http_charset_module | 将指定的字符集添加到Content-Type响应头。 可以将数据从一个字符集转换为另一个字符集。 |
http_empty_gif_module | 发出一个单像素透明GIF |
http_fastcgi_module | 通过请求给FastCGI服务器 |
http_geo_module | 创建变量,其值依赖于客户端IP地址的值 |
http_gzip_module | 使用gzip压缩,减少传输数据大小 |
http_limit_conn_module | 限制每个定义键的连接数,特别是来自单个IP地址的连接数 |
http_limit_req_module | 限制每个已定义键的请求处理速率,特别是来自单个IP地址的请求处理速率。 |
http_map_module | 创建变量,其值依赖于其他变量的值。 |
http_memcached_module | 通过请求给memcached服务器 |
http_proxy_module | 通过HTTP请求给其他服务器 |
http_referer_module | 阻止在Referer报头中有无效值的请求 |
http_rewrite_module | 使用正则表达式更改请求URI并返回重定向; 有条件地选择配置。 需要PCRE库。 |
http_scgi_module | 通过请求给到一个SCGI服务器 |
http_ssi_module | 在响应中处理SSI (Server Side Includes,服务器端包含)命令 |
http_split_clients_module | 创建适合A/B测试的变量,也称为分割测试。 |
http_upstream_hash_module | 启用Hash负载均衡方法 |
http_upstream_ip_hash_module | 启用IP Hash负载均衡方法 |
http_upstream_keepalive_module | 启用keepalive连接 |
http_upstream_least_conn_module | 启用最小连接负载均衡方法 |
http_upstream_zone_module | 启用共享内存空间模块 |
http_userid_module | 设置适合客户端识别的cookie |
http_uwsgi_module | 通过请求给一个uwsgi服务器 |
-- with-http_ssl_module | 支持HTTPS协议 |
--with-file-aio | 启用异步I/O |
-- with-http_mp4_module | 使能服务器端支持MP4文件 |
-- with-http_v2_module | 支持HTTPv2协议 |
-- with-stream | 启用TCP和UDP代理功能 |
--with-threads | 使能Nginx使用线程池 |
特殊说明:
SCGI:SCGI协议是一个CGI(通用网关接口)协议的替代品, 它是一个应用与HTTP服务器接口标准。
uwsgi:uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
WSGI / uwsgi / uWSGI 三个概念的区分:
-
WSGI是一种通信协议。
-
uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
-
而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
3)、动态添加第三方库
$ ./configure ... --add-dynamic-module=<PATH>
*.so会写入到 prefix/modules/ 目录中
成功添加完动态库后,需要将.so文件添加到Nginx配置文件中
load_module modules/ngx_mail_module.so;
4、安装Nginx
$ make
$ sudo make install
5、检查Nginx配置文件语法
$ sudo nginx -t prefix/conf/nginx.conf
6、启动Nginx
$ sudo nginx