背景
通过apt install nginx
安装好nginx后,需要添加ngx_http_lower_upper_case模块,因为通过apt安装没有源码包,需要添加nginx模块。添加模块则需要通过在源码包执行./configure xxxx --add-module=ngx_http_lower_upper_case
命令来安装模块。
Nginx源码包下载
进入Nginx官网,选择对应的源码包,进行下载
复制链接地址后,到服务器上执行
curl -O https://nginx.org/download/nginx-1.18.0.tar.gz
解压压缩包
tar -xvzf nginx-1.18.0.tar.gz
进入解压好的文件夹
cd nginx-1.18.0
下载Nginx lower模块
git clone https://github.com/replay/ngx_http_lower_upper_case.git
执行./configure命令
查看nginx初始的安装参数,注意-V是大写的V
ubuntu@ip-10-0-128-94:~/nginx-1.18.0$ nginx -V
nginx version: nginx/1.18.0 (Ubuntu)
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments:
--with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-qDpDX0/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -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 --add-dynamic-module=/build/nginx-qDpDX0/nginx-1.18.0/debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module
复制configure arguments参数,后面添加 --add-module=~/ngx_http_lower_upper_case
,具体模块根据需要添加的模块在服务器上的路径决定。
这是我的完整命令
./configure --with-cc-opt='-g -O2 -ffile-prefix-map=/build/nginx-qDpDX0/nginx-1.18.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -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 --add-dynamic-module=/build/nginx-qDpDX0/nginx-1.18.0/debian/modules/http-geoip2 --with-http_addition_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_sub_module --add-module=/home/ubuntu/ngx_http_lower_upper_case
到刚刚解压后的nginx目录执行上面的命令。
解决报错
如果遇到缺少依赖的报错,根据报错提示选择执行以下命令
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install gcc
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g zlib1g-dev
# Ubuntu14.04的仓库中没有发现openssl-dev,由下面openssl和libssl-dev替代
#apt-get install openssl openssl-dev
sudo apt-get install openssl
sudo apt-get install libssl-dev
————————————————
版权声明:本文为CSDN博主「程序媛小雪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_23832313/article/details/83578836
解决好报错后在nginx源码目录重新执行 ./configure xxxxx --add-module=xxx
编译并替换
执行./configure
成功,执行make
,千万不要执行make install
执行过程中可能遇到
cc1: all warnings being treated as errors make[1]: *** [objs/Makefile:924: objs/src/event/ngx_event_openssl.o] Error 1
这个错误,这时需要进入到nginx的源码目录的objs。
vim Makefile
将
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused -Werror -g
后的 -Werror -g 去掉 变成
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused
————————————————
版权声明:本文为CSDN博主「humanyr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/humanyr/article/details/107405310
执行完上述操作,重新make
替换nginx
sudo cp /usr/sbin/nginx /usr/sbin/nginx.bak
sudo cp ./objs/nginx /usr/sbin/
执行时遇到
sudo cp ./objs/nginx /usr/sbin/
cp: cannot create regular file '/usr/sbin/nginx': Text file busy
原因是nginx此时还在运行,无法替换该文件,通过nginx -s stop
停止nginx即可,停止后,重新执行cp。
最后替换完成,启动nginx即可
service start nginx