一、源码目录结构
-
auto
:存放的是编译相关的脚本 -
CHANGES
:版本变更记录 -
CHANGES.ru
:俄罗斯文的版本变更记录 -
conf
:nginx默认的配置文件 -
configure
(重要):nginx软件的自动脚本程序,很重要,下面重点讲这个作用:-
检测环境及根据环境检测结果生成C代码
-
生成编译代码需要的Makefile文件
-
-
contrib
:存放的是几个特殊的脚本文件,其中README中对脚本有着详细的说明 -
html
:存放的是Nginx自带的两个html页面,访问Nginx的首页和错误页面 -
LICENSE
:许可证的相关描述文件 -
man
:nginx的man手册 -
README
:Nginx的阅读指南 -
src
:Nginx的源代码 -
objs
(重要):执行./configure
之后该文件会被自动创建并且写入./configure
生成的中间文件,之后的make
会使得生成的nginx
二进制文件(nginx的核心)也放置于此
二、自定义configure配置路径和模块
1.路径
解释:可通过将下面参数在源码安装nginx执行./configure + 下面参数
实现自定义路径,./configure --help
查看可以添加的命令
--prefix=PATH (默认位置/usr/local/nginx)存放nginx安装文件的位置(不一定存放核心二进制文件(取决于--sbin-path),其里面一般html、动态模块软链等等)
--sbin-path=PATH (默认位置/usr/local/nginx/sbin/nginx)二进制的核心可执行文件(名为nginx)
--modules-path=PATH (默认位置/usr/local/nginx/modules)一般存放动态模块的so文件(相当于window的dll文件)
--conf-path=PATH (默认位置/usr/local/nginx/conf/nginx.conf)nginx的关键配置文件
--error-log-path=PATH (默认位置/usr/local/nginx/logs/error.log)错误日志
--http-log-path=PATH (默认位置/usr/local/nginx/logs/access.log)访问日志
--pid-path=PATH (默认位置/usr/local/nginx/logs/nginx.pid)正在运行的nginx进程号
--lock-path=PATH (默认位置/usr/local/nginx/logs/nginx.lock)nginx锁
--add-module=PATH 加入的第三方模块的路径
--add-dynamic-module=PATH 动态加入的第三方模块的路径
--http-client-body-temp-path=PATH
--http-proxy-temp-path=PATH
--http-fastcgi-temp-path=PATH
--http-uwsgi-temp-path=PATH
--http-scgi-temp-path=PATH
2.模块
2.1 初步介绍
解释:之前本专栏的一篇文章在源码编译安装时,提到了这个,下面的示例可以看到有很多东西,可以通过./configure --help
查看可以添加的命令,其中可以根据里面指令安装某些模块
示例:./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-KTLRnK/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
2.2 自定义模块安装
解释:值得注意的是,nginx默认安装了40多个模块构成nginx的基本功能,即使./configure
什么参数也没有也会被安装上(如下)(可通过./configure
后面加参数取消某模块的默认安装);同时存在某些模块并不在默认安装里面但也是很重要的(nginx提供,但默认不安装,需要通过./configure
后面添加参数进行安装)例如--with-mail_ssl_module
,第三方模块安装:https://blog.csdn.net/weixin_46765649/article/details/128018659
- HTTP
- HTTP_CACHE
- HTTP_CHARSET
- HTTP_GZIP
- HTTP_SSI
- HTTP_ACCESS
- HTTP_AUTH_BASIC
- HTTP_MIRROR
- HTTP_USERID
- HTTP_AUTOINDEX
- HTTP_GEO
- HTTP_MAP
- HTTP_SPLIT_CLIENTS
- HTTP_REFERER
- HTTP_REWRITE
- HTTP_PROXY
- HTTP_FASTCGI
- HTTP_UWSGI
- HTTP_SCGI
- HTTP_GRPC
- HTTP_MEMCACHED
- HTTP_LIMIT_CONN
- HTTP_LIMIT_REQ
- HTTP_EMPTY_GIF
- HTTP_BROWSER
- HTTP_UPSTREAM_HASH
- HTTP_UPSTREAM_IP_HASH
- HTTP_UPSTREAM_LEAST_CONN
- HTTP_UPSTREAM_RANDOM
- HTTP_UPSTREAM_KEEPALIVE
- HTTP_UPSTREAM_ZONE
- MAIL_POP3
- MAIL_IMAP
- MAIL_SMTP
- STREAM_LIMIT_CONN
- STREAM_ACCESS
- STREAM_GEO
- STREAM_MAP
- STREAM_SPLIT_CLIENTS
- STREAM_RETURN
- STREAM_UPSTREAM_HASH
- STREAM_UPSTREAM_LEAST_CONN
- STREAM_UPSTREAM_RANDOM
- STREAM_UPSTREAM_ZONE