auto/lib/conf脚本主要用于配置一些nginx所依赖的一些外部库:
- PCRE库
- OpenSSL库
- MD5库
- sha1库
- zlib库
- xslt库
- LibGD库
- Perl库
- Geoip库
- Google Perftools库
- LibAtomic库
上面是Nginx当前所支持的一些依赖库配置,但是目前我们并没有用到全部。下面我们先对auto/lib/conf脚本进行简要分析,然后再分析一下当前我们所用到的一些库的配置。
auto/lib/conf脚本
1) PCRE库
在我们配置configure脚本时通过--with-pcre=*
启用了PCRE
,然后在auto/modules中通过HTTP_REWRITE
会启用USE_PCRE
,因此这里会调用auto/lib/pcre/conf。
2) OpenSSL库
我们通过--with-http_ssl_module
会启用HTTP_SSL
,从而USE_OPENSSL
会置为YES
,因此这里会调用auto/lib/openssl/conf。
3) MD5库
auto/options脚本中默认启用HTTP_CACHE
,从而导致auto/modules中会启用USE_MD5
,同时又因为USE_OPENSSL
值为YES
,因此会采用OpenSSL中的MD5。
4) SHA1库
在auto/options中HTTP_AUTH_BASIC
默认值为YES
,因此会导致在auto/modules脚本中启用USE_SHA1
。这里也会使用OpenSSL中的SHA1.
5) Zlib库
在auto/options脚本中HTTP_GZIP
默认值为YES
,因此会导致在auto/modules脚本中启用USE_ZLIB
,因此这里会调用auto/lib/zlib/conf.
6) XSLT库
USE_LIBXSLT
并不会被启用。
7) LibGD库
USE_LIBGD
并不会被启用。
8) Perl库
USE_PERL
并不会被启用。
9) GeoIP库
USE_GEOIP
并不会被启用。
10) Google PerfTools库
NGX_GOOGLE_PERFTOOLS
并不会被启用。
11) libatomic库
NGX_LIBATOMIC
并不会被启用。
2. auto/lib/pcre/conf脚本
脚本内容如下:
这里PCRE
值为../pcre-8.40
,因此执行第一个if条件分支。NGX_CC_NAME
为gcc,因此执行如下:
将对应的pcre头文件、库文件添加到相应的变量中。
PCRE_JIT
值为NO
,因此并没有开启pcre jit特性。
3. auto/lib/openssl/conf脚本
脚本内容如下:
此处我们虽然通过--with-http_ssl_module
以间接的方式启用了USE_OPENSSL
,但是OPENSSL
的值仍为NONE
。我们这里是采用自动链接我们事先手动安装的openssl库的方式。因此这里执行if条件的else分支:
将OPENSSL
置为NO
,然后调用auto/feature检测当前系统是否有openssl特性(此外这里会根据一些特殊的操作系统进行特别查找)。如果没有找到,则直接报错退出;否则执行如下:
将相应的头文件、库文件保存到对应的变量中,同时将OPENSSL
置为YES
。
4. MD5库
这里在auto/lib/conf脚本中,采用的是Openssl中的MD5库:
5. SHA1库
这里在auto/lib/conf脚本中,采用的是Openssl中的Sha1库:
6. auto/lib/zlib/conf脚本
脚本内容如下:
在auto/options脚本中通过--with-zlib=*
将ZLIB
值置为了../zlib-1.2.11
,因此会执行if条件的第一个分支,将ZLIB
头文件保存:
这里NGX_CC_NAME
为gcc,因此执行如下:
将对应的库文件保存到相应变量中。