Nginx 会比 Apache 的体积更加的小,所以可以在一些配置较低的主机上运行。但是,这样的代价是 Nginx 自带的功能较少。但是,我们可以为 Nginx 安装第三方的模块来拓展其功能。
因为 Nginx 不支持动态加载模块,所以,我们需要重新编译 Nginx,并覆盖原文件来实现升级和安装新的模块
这里会以substitutions_filter_module 为例
完全卸载 Nginx
# 完全卸载 Nginx
# 请不要再工作环境中执行此步骤
# 请在确认数据已备份完全后或者 Nginx 环境已确认损坏后执行
apt-get -y remove nginx nginx-common
apt-get -y purge nginx nginx-common
apt-get -y autoremove
安装 Nginx
# switch to root
sudo -i
apt upgrade
apt-get install nginx
确认 Nginx 版本, 并记下configure参数
nginx -V
下载 Nginx
# download nginx source code
# 这里下载你需要的 Nginx 版本
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xvzf nginx-1.18.0.tar.gz
cd nginx-1.18.0
下载第三方模块
git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git
mkdir /git
cd /git
mv ngx_http_substitutions_filter_module /git/ngx_http_substitutions_filter_module
# install
cd /root/nginx-1.18.0
./configure YOUR CONFIGURE ARGUMENTS --add-module=/git/ngx_http_substitutions_filter_module
例如:
./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-d4S6DH/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-compat --with-debug --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_sub_module --add-module=/git/ngx_http_substitutions_filter_module
make
在未安装nginx的情况下安装nginx第三方模块
make install
在已安装nginx的情况下安装nginx第三方模块
mv /usr/sbin/nginx /usr/sbin/nginx.old
cp objs/nginx /usr/sbin/nginx
评论区