最近在折腾云锁,按照官方给的方法安装后Nginx一直无法打开Web防护,查阅相关资料后发现Nginx的高版本需要自行加入云锁相关代码后自编译,于是就有了这篇博文

  • 1.编译前先将已经安装的Nginx文件进行备份,通过ps命令查看Nginx文件的路径。以下所有步骤都以自身Nginx路径为准。

    image-20201220140956731

可以看到Nginx路径为/usr/local/nginx/sbin/nginx ,所在目录就是/usr/local/nginx/sbin/

(宝塔的路径一般在/www/server/nginx/sbin/)

  • 2.进入目录

    cd /usr/local/nginx/sbin

  • 3.备份nginx,也就是将nginx复制为nginx.bak

    cp nginx nginx.bak

  • 4.进入root用户主目录并下载云锁的防护模块

cd
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip

image-20201220141204239

  • 5.解压下载的防护模块

unzip nginx-plugin-master.zip

如果这一步提醒未找到unzip的话,Centos执行

yum install unzip -y

Ubuntu执行

apt install unzip -y

image-20201220141319023

  • 6.获取当前云锁模块所在目录的全路径
cd nginx-plugin-master
pwd

image-20201220141405700

如果按照流程来的话,路径一般都是/root/nginx-plugin-master

  • 7.查询Nginx版本号和所加载的模块

/usr/local/nginx/sbin/nginx -V

(宝塔为 /www/server/nginx/sbin/nginx -V,这里根据第1步得到的路径自行变换)

image-20201220141503460

这个内容需要进行保存,后面会用到 (删除./configure arguents:只留下以后的代码)

  • 8.下载Nginx源码,宝塔如果使用的急速安装就卸载掉选择编译安装,源码会在/www/server/nginx/src保存,我没用宝塔,所以要下载Nginx源码

    首先进入用户根目录,然后进行下载源码(宝塔用户直接cd /www/server/nginx/src,当前步骤就不用执行了)

    cd
    wget http://nginx.org/download/nginx-1.18.0.tar.gz

    image-20201220141638473

解压ngxin,注意这里后缀为tar.gz,不能使用unzip解压

tar zxvf nginx-1.18.0.tar.gz

  • 9.配置configure

进入ngxin源码目录

cd nginx-1.18.0

./configure空格+第7步保存的内容空格+ –-add-module=/root/nginx-plugin-master

我的为

./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-stream --with-stream_ssl_module --with-openssl=/root/lnmp1.7/src/openssl-1.1.1g --with-openssl-opt='enable-weak-ssl-ciphers' --add-module=/root/nginx-plugin-master

  • 10.Nginx1.8.0 以上和 Tengine 2.2.0 则需要修改objs/Makefile文件和objs/ngx_modules.c来支持post过滤和内容过滤。

首先,在Makefile文件中的CFLAGS=...-Werror -g后追加宏定义 -DHIGHERTHAN8
可以把文件通过ftp下载下来在本地改,也可以ssh使用vi/vim修改,我这里使用的是vi

vi objs/Makefile

image-20201220142604522

vi里面输入i进入编辑模式

如图加入

image-20201220142614654

按Esc进入命令模式后输入:wq保存并退出

接着编辑objs/ngx_modules.c,也可以通过ftp下载下来修改

vi objs/ngx_modules.c

将&ngx_http_yunsuo_module,向下移动到ngx_http_userid_filter_module和ngx_http_headers_filter_module之间。(已在此之间的则可忽略)

命令模式输入yy复制,dd剪辑,p粘贴,修改后如图,如果没有找到&ngx_http_yunsuo_module,说明之前步骤有问题

image-20201220142746561

命令模式:wq保存

  • 11.编译nginx

make(如原本无nginx,make后还需make install)

这里需要漫长的等待

  • 12.替换编译完成的nginx

删除以前的nginx

rm -rf /usr/local/nginx/sbin/nginx

宝塔为 rm -rf /www/server/nginx/sbin/nginx

替换nginx

cp objs/nginx /usr/local/nginx/sbin/nginx

宝塔为 cp objs/nginx /www/server/nginx/sbin/nginx

重启nginx服务

service nginx restart

image-20201220142944519

  • 13.完成

image-20201220143008076

如何卸载自编译的nginx

cd /usr/local/nginx/sbin/ (宝塔为  cd /www/server/nginx/sbin/ )
rm -rf nginx
mv nginx.bak nginx
service nginx restart
最后修改:2021 年 04 月 25 日 11 : 10 PM
如果觉得我的文章对你有用,请随意赞赏