想必大家对安装Nginx的方法都已经掌握了,但是今天我将给大家讲述如何使用yum安装的Nginx进行安装第三方模块,例如大家常常在配置Nginx的时候使用的调试输出工具 nginx-module-echo,看了网上好的教程全部千篇一律,基本是互相抄袭,并且方法比较笨,而且又难以操作和掌握,并且还要停用Nginx进行编译安装第三方模块,这些方法不是最好的解决方案。那么这篇文章我将给大家讲述如何不停用Nginx进行安装第三方模块。
Nginx是什么?
首先,nginx(发音为“engine x”)是一个免费的开源Web服务器,由俄罗斯软件工程师Igor Sysoev编写。自2004年公开发布以来,nginx一直专注于高性能,高并发性和低内存使用。Web服务器功能之上的其他功能,如负载平衡,缓存,访问和带宽控制,以及与各种应用程序高效集成的能力,有助于使nginx成为现代网站架构的不错选择。目前,nginx是互联网上第二大最受欢迎的开源Web服务器。
Nginx优势在哪里?
以高性能和高效率处理高并发性始终是部署nginx的关键优势。但是,现在有更多有趣的好处。
在过去几年中,Web架构师已经接受了将其应用程序基础结构与Web服务器分离和分离的想法。然而,之前以LAMP(Linux,Apache,MySQL,PHP,Python或Perl)为基础的网站形式,现在可能不仅仅是一个基于LEMP的(E’代表’引擎x’)但是,越来越多的做法是将Web服务器推向基础设施的边缘,并以不同的方式围绕它集成相同或经过改进的应用程序和数据库工具集。
nginx非常适合这一点,因为它提供了方便卸载并发,延迟处理,SSL(安全套接字层),静态内容,压缩和缓存,连接和请求限制,甚至来自应用程序的HTTP媒体流所需的关键功能层到更有效的边缘Web服务器层。它还允许直接与memcached / Redis或其他“NoSQL”解决方案集成,以在为大量并发用户提供服务时提高性能。
随着最近开发套件和编程语言的广泛使用,越来越多的公司正在改变他们的应用程序开发和部署习惯。nginx已成为这些不断变化的范例中最重要的组成部分之一,它已经帮助许多公司在预算范围内快速启动和开发其Web服务。
nginx的第一行是在2002年编写的。2004年,它根据双条款BSD许可证向公众发布。从那时起,nginx用户的数量一直在增长,提供想法,并提交对整个社区非常有帮助和有益的错误报告,建议和观察。
nginx代码库是原创的,完全是用C编程语言从头开始编写的。nginx已被移植到许多架构和操作系统,包括Linux,FreeBSD,Solaris,Mac OS X,AIX和Microsoft Windows。nginx有自己的库,其标准模块除了zlib,PCRE和OpenSSL之外不会超出系统的C库,除非zlib,PCRE和OpenSSL可以选择从构建中排除,如果不需要或者由于潜在的许可证冲突。
关于Windows版nginx的几句话。虽然nginx适用于Windows环境,但nginx的Windows版本更像是概念验证而不是功能齐全的端口。nginx和Windows内核架构存在某些限制,目前这些架构不能很好地交互。Windows的nginx版本的已知问题包括并发连接数量少得多,性能下降,没有缓存以及没有带宽监管。面向Windows的nginx的未来版本将更紧密地匹配主流功能。
Nginx架构概述
nginx就是一种专业工具,可以实现更高的性能,密度和经济地使用服务器资源,同时实现网站的动态增长,因此它遵循不同的模式。实际上,它受到各种操作系统中基于事件的高级机制的持续开发的启发。结果是模块化,事件驱动,异步,单线程,非阻塞架构,它成为nginx代码的基础。
下面是Nginx的架构图:
如何安装最新版本Nginx?
我要讲解的是最简单而且最安全的安装方式。首先我们是Centos 7下安装Nginx的最新版本
如果你直接使用下面的命令安装Nginx,则可能不一定是最新的版本。
1 | yum -y install nginx |
接下来我们使用最简单,最有效的方式安装最新的版本Nginx,目前的Nginx的版本是 :http://nginx.org/packages/centos/7/x86_64/RPMS/
1.我们使用下面的命令进行安装最新的版本:
1 | yum install http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.16.0-1.el7.ngx.x86_64.rpm |
执行上面的既可以安装最新的Nginx版本。如果想安装其他的版本,直接换掉后面的部分即可。
2.开机启动Nginx服务器
1 2 | systemctl start nginx systemctl enable nginx |
3.查看Nginx版本号
1 2 3 | [root@localhost~]# nginx -v nginx version: nginx/1.16.0 [root@localhost~]# |
如何安装第三方模块,echo模块ngx_http_echo_module呢?
这对大家在网上看到如何安装第三方模块安装方法的大都是一样的,需要重新编译,但是我今天介绍的不用直接编译即可完成Nginx的模块安装,并且很快。
我们使用yum安装Nginx安装后,默认配置的有/etc/nginx/modules目录,这里就是存放Nginx的模块的位置。
第一种方式
第一步我们安装yum库
1 | yum install https://extras.getpagespeed.com/release-el7-latest.rpm |
第二步我们执行下面命令进行安装
1 | yum install nginx-module-echo |
在看看目录如图
既可以看到了我们安装的模块了。
第二种方式
直接下载镜像文件so格式的模块。
你首先通过命令nginx -v
查看下你nginx版本号,本模块支持Nginx版本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1.16.x 1.15.x (last tested: 1.15.8) 1.14.x 1.13.x (last tested: 1.13.6) 1.12.x 1.11.x (last tested: 1.11.2) 1.10.x 1.9.x (last tested: 1.9.15) 1.8.x 1.7.x (last tested: 1.7.10) 1.6.x 1.5.x (last tested: 1.5.12) 1.4.x (last tested: 1.4.4) 1.3.x (last tested: 1.3.7) 1.2.x (last tested: 1.2.9) 1.1.x (last tested: 1.1.5) 1.0.x (last tested: 1.0.11) 0.9.x (last tested: 0.9.4) 0.8.x (last tested: 0.8.54) 0.7.x >= 0.7.21 (last tested: 0.7.68) |
下载后的模块通过ftp上传到你的服务器放到Nginx模块目录/etc/nginx/modules
或者 /usr/lib64/nginx/modules
(注意我这是通过dnf
或者yum
安装的nginx,操作系统是centos
或者redhat
)里面即可,接下来进行配置模块。然后在nginx配置文件里面添加 load_module /etc/nginx/modules/ngx_http_echo_module.so;
这句话,不然不能加载会报错。
1 2 3 4 5 6 7 8 9 10 | user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; load_module /etc/nginx/modules/ngx_http_echo_module.so; events { worker_connections 1024; } |
在然后把下面测试代码放到 server模块
里面。
1 2 3 4 5 6 | ##调试使用的 location /test { default_type text/html; echo $http_host; echo $cache_uri; } |
最后保存,测试下nginx -t
命令是否语法正确,重新加载命令systemctl reload nginx
即可OK。
访问https://www.sky8g.com/test
即可得到你想要的信息了。
总结
以上是安装Nginx的第三方模块,后续将更新更多有关IT技术文章。
找了这么多文章,这一篇是最靠谱的。
按博主的第二种方法,直接下载so文件,重启nginx,就可以使用了。
但是用第一种方法,还是不行,有报错。
#yum install https://extras.getpagespeed.com/release-el7-latest.rpm
#yum install nginx-module-echo
—> 软件包 nginx.x86_64.1.1.14.2-1.el7_4.ngx 将被 升级
—> 软件包 nginx.x86_64.1.1.18.0-2.el7.ngx 将被 更新
–> 解决依赖关系完成
=======================================================================
Some packages in your transaction are brought to you by GetPageSpeed:
– 1:nginx-1.18.0-2.el7.ngx.x86_64
– 1:nginx-module-echo-1.18.0.0.62-2.el7.gps.x86_64
To enable package installs, subscribe using the following link:
https://www.getpagespeed.com/repo-subscribe?server_ip=218.19.**.**
=======================================================================
请问这是为什么?
因为除了这个echo模块,我还想安装其它三方模块。但是网上不好找相应的so文件。
如果第一种方式可以用,那就实在太方便了。
求指点,谢谢!
你好,可以进行使用编译成so文件在进行下载对应的版本。后续我将写一篇如何进行编译的so文件进行详细的讲解,请关注我的博客文章。
所以第一种方法是要花钱的对吧
不需要花钱的。
我运行了 yum install https://extras.getpagespeed.com/release-el7-latest.rpm。然后用yum update就会报错:
您的事务中的某些包由GetPageSpeed提供给您:
-popt-1.16-14.el7.x86_64
要启用包安装,请使用以下链接订阅:
https://www.getpagespeed.com/repo-subscribe?服务器_ip=101.37.149.55
=======================================================================
正在退出,因为缺少订阅
我现在正在找把这个release-el7-latest.rpm卸载掉的方法。。。。。。
No package nginx-module-realip available. 我是不是名称弄错了……
不清楚你是怎么操作的
请问.so 文件是哪来的,网上的第三方模板都是zip或gz,解压后都是文件夹,没有.so文件。在网上百度一番好像是编译出来的,但是没能找到详细的教程,能给我获取.so文件教程链接吗?
你好,可以点击下载呢,如果不能下载请通知。这个so文件是编译好的,不用再重新编译nginx,网上的都是那些要重新编译,我最不喜欢那样的还是直接下载so文件是最好的,这也是ngix所支持并喜欢的。
非常抱歉,才刚刚从垃圾箱里找到邮件。我百度了一下.so文件似乎是nginx动态编译出来的,我没找到什么合适的关键词来搜索这些模块文件。是通过https://extras.getpagespeed.com/release-el7-latest.rpm这个库获取的吗?
因为没能找到我需要的模块.so文件,最后我还是采用了编译替换二进制文件的办法。
不是这个库呢,是直接是so的文件镜像,这样下载https://pan.baidu.com/s/1y5JunumGB5etI4EgkaWFNA好后直接放到nginx中即可
你可能误会我意思了,我并不是单要这个模块,还要其他的模块,像是ngx_cache_purge。我找不到.so文件,所以直接编译替换二进制文件了。
可以按照下面这个步骤安装,希望对你有帮助,https://www.sky8g.com/skin/img/so-sky8g.png
玩Linux服务器,特别是配置,我都比较喜欢根据教程一步步操作,要不然根本玩不转
呵呵,我还是比较喜欢走捷径呀,以便能学到更多的技术,这样安装模块比较省劲和安全。不至于重新编译。
为嘛我试了试 不行呢 我试了nginx 1.14.0-1.14.2都不行 也动态加载.so文件了
方便加个qq或者微信不
你好,请问你放到nginx的加载模块的目录了吗?把这个so文件放进去,然后在重启下web服务器就好了。