接上一篇,我们在初始化安装的时候添加了nginx_lua模块,然后了解到nginx不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.接下来一起看看如何安装nginx第三模块吧!

     1.我们先看看 目前nginx的配置

[root@localhost src]# cd /usr/local/nginx/
[root@localhost nginx]# ./sbin/nginx -V
nginx version: nginx/1.8.
built by gcc 4.8. (Red Hat 4.8.-) (GCC)
configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_devel_kit-0.2.19 --add-module=/usr/local/src/lua-nginx-module-0.9.13
[root@localhost nginx]#

2.今天我们以一款动态配置upstream的模块为例子 (lua-upstream-nginx-module) https://github.com/yzprofile/ngx_http_dyups_module

[root@localhost src]# wget https://github.com/yzprofile/ngx_http_dyups_module/archive/master.tar.gz \
> -O ngx_http_dyups_module-master.tar.gz

3.解压,编译

[root@localhost src]# tar  -zvxf ngx_http_dyups_module-master.tar.gz
[root@localhost src]# cd nginx-1.8.
[root@localhost nginx-1.8.]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_devel_kit-0.2. --add-module=/usr/local/src/lua-nginx-module-0.9. --add-module=/usr/local/src/ngx_http_dyups_module-master
[root@localhost src]# make

    4.然后覆盖nginx文件并重新开启nginx

[root@localhost nginx-1.8.]# /usr/local/nginx/sbin/nginx  -s stop
[root@localhost nginx-1.8.]# cp objs/nginx /usr/local/nginx/sbin/nginx
cp:是否覆盖"/usr/local/nginx/sbin/nginx"? y
[root@localhost nginx-1.8.]# /usr/local/nginx/sbin/nginx

    5.测试下原有lua模块 正常

   

   6.下面测试我们的lua-upstream-nginx-module

        先修改nginx  主要是添加 动态配置upstream的接口站点 我们这里用端口81来 默认配置了 ttlsa1跟ttlsal2

        [root@localhost nginx]# vim conf/nginx.conf

#user  nobody;
worker_processes ; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; gzip on; upstream ttlsa1 {
server 127.0.0.1:;
} upstream ttlsa12 {
server 127.0.0.1:;
}
# 动态配置upstream的接口站点
server {
listen ;
location / {
dyups_interface; # 这个指令表示这边是接口站点
}
} server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
}
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
#error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
}
}
}

      6.1然后重启nginx

      [root@localhost nginx]# ./sbin/nginx -s reload 

      6.2开始测试

           浏览器访问 http://10.12.7.32:81/list 

           我这里是远程访问,没有开启81端口所以第一次悲剧了

           编辑防火墙列表

           [root@localhost nginx]# vim /etc/sysconfig/iptables 

           把81端口添加

          

 不过你要是在centos操作的话就忽略此步骤

           测试无非就是http请求

           centos下操作

[root@localhost nginx]# curl -d "server 127.0.0.1:801;server 127.0.0.1:802;" 127.0.0.1:/upstream/ttlsa3
[root@localhost nginx]# curl 127.0.0.1:/detail
ttlsa1
server 127.0.0.1: weight= max_fails= fail_timeout= backup= down= ttlsa12
server 127.0.0.1: weight= max_fails= fail_timeout= backup= down= ttlsa3
server 127.0.0.1: weight= max_fails= fail_timeout= backup= down=
server 127.0.0.1: weight= max_fails= fail_timeout= backup= down=

     浏览器下

 ok,http的话c#操作肯定很方便,不过据说这家伙不能upstream 持久化,nginx重启后就啥也没有了,接下来还是的看看有没有其他更好的!

           目前看nginx资料都是在一些运维的站点比较多,前两篇也是结合http://www.ttlsa.com去看的,网站不错,名字也很棒《运维生产时间》!

玩玩 Nginx 2-----给Nginx添加第三方模块(动态更新upstream)的更多相关文章

  1. nginx 番外----添加第三方模块

    #第三方模块需要先进行下载,然后再编译时指定文件目录 1.查看当前编译模块 root@nginx sbin]# ./nginx -V #查看当前添加模块 nginx version: nginx/ b ...

  2. nginx添加第三方模块

    原已经安装好的nginx,现在需要添加一个未被编译安装的模块: nginx -V 可以查看原来编译时都带了哪些参数,看看nginx是哪个版本,去下载一个nginx的源码,解压 原来的参数:--pref ...

  3. yum安装的Nginx添加第三方模块支持tcp

    需求:生产有个接口是通过socket通信.nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. 实现方法:Centos7.2下yum直接安装的nginx, ...

  4. yum安装下的nginx,如何添加模块,和添加第三方模块

    需求:生产有个接口是通过socket通信.nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信. 实现方法:Centos7.2下yum直接安装的nginx, ...

  5. nginx使用热部署添加新模块

    简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书.也就是使用 https协议.那么则需要添加 http_ssl ...

  6. python永久添加第三方模块,PYTHONPATH的设置

    今天用pip安装pymysql后遇到了一个问题,在PyCharm中import pymysql模块时,运行却提示我找不到pymysql mudule 我先考虑的是pymysql没有安装成功,但是cmd ...

  7. Nginx 高级配置-第三方模块编译

    Nginx 高级配置-第三方模块编译 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 第三模块是对nginx 的功能扩展,第三方模块需要在编译安装Nginx 的时候使用参数--add ...

  8. 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语

    目录 日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成证书 配置ng ...

  9. 如何安装nginx第三方模块

    nginx文件非常小但是性能非常的高效,这方面完胜apache,nginx文件小的一个原因之一是nginx自带的功能相对较少,好在nginx允许第三方模块,第三方模块使得nginx越发的强大. 在安装 ...

随机推荐

  1. Wpf中鼠标样式的修改,作用点修改

    最近,在做一个控件的鼠标样式,Ps加了插件,可以编辑生成.cur格式的图标. 可是,所有的改完以后,调试运行,结果发现自己制作的图标的作用点总是在左上角,而不是在"手形"图标的食指 ...

  2. DLL 导出变量

    声明为导出变量时,同样有两种方法:   第一种是用__declspec进行导出声明 #ifndef _DLL_SAMPLE_H #define _DLL_SAMPLE_H // 如果定义了C++编译器 ...

  3. flask扩展模块flask-sqlachemy 的使用---mysql数据库

    该篇博客配置环境为:python版本3.5,flask2.0,python3中已经不再支持MySQLdb模块,所有这里我用了pymysql,所有使用前应该 安装pymysql:pip install ...

  4. 关于Mysql的索引

    索引是指把你设置为索引的字段A的内容储存在一个独立区间S里,里面只有这个字段的内容.在找查这个与这个字段A的内容时会直接从这个独立区间里查找,而不是去到数据表里查找.找到的这些符合条件的字段后再读取字 ...

  5. .Net小白的第一篇博客

    2016年8月8日,经过了一周的纠结.我决定放弃了,原来学了六年并且工作两年的学前教育,走上了开发的道路.我认为生活就应该这样,就应该充满挑战,而不是每天在重复相同的工作!作为插班生的我,于2016年 ...

  6. 计算机程序的思维逻辑 (70) - 原子变量和CAS

    从本节开始,我们探讨Java并发工具包java.util.concurrent中的内容,本节先介绍最基本的原子变量及其背后的原理和思维. 原子变量 什么是原子变量?为什么需要它们呢? 在理解synch ...

  7. 极光推送助推视频App,打造最活跃手机新媒体平台

    移动应用能够帮助吸引更多的新用户,增加用户互动和对话.但你得让用户想起你,如何在一部手机上数十个App中脱颖而出,是考验App运营的关键之处.为了打造一个成功的App,开发者需要着眼长远,不应局限于其 ...

  8. ERP实施员的保密要求

    一.公司机密文件范围 1    公司级计算机密码 2    公司级程序软件 3    与客户联系的各种远程联系用户名,密码 4    公司发展计划.规划 5    公司客户资料.财务报表.人事薪资.报 ...

  9. Python拉勾爬虫——以深圳地区数据分析师为例

    拉勾因其结构化的数据比较多因此过去常常被爬,所以在其多次改版之下变得难爬.不过只要清楚它的原理,依然比较好爬.其机制主要就是AJAX异步加载JSON数据,所以至少在搜索页面里翻页url不会变化,而且数 ...

  10. JS判断手机当前的系统类型

    <script language="javascript"> window.onload = function () { var n = navigator.userA ...