设为首页 收藏本站
查看: 2123|回复: 0

[经验分享] nginx+redis +lua脚本实现nginx 302临时跳转

[复制链接]

尚未签到

发表于 2018-11-2 11:20:11 | 显示全部楼层 |阅读模式
实现过程:
  nginx+redis +lua的环境,前一篇博文已经部署好
  在服务器上安装好redis后,记得要安装php的redis扩展,由于开发语言是php,所以要安装redis的扩展,这样才能php程序操作redis,
  php脚本存入key到redis中,通过请求url来实现nginx 302跳转
  在nginx.conf文件中http标签添加如下内容:
  

[root@localhost ~]# grep lua /usr/local/nginx/conf/nginx.conf  lua_package_path "/usr/local/nginx/lua/lua-resty-redis/lib/?.lua;;";
  lua_shared_dict cache_ngx 128m;
  
[root@localhost ~]# grep vhost /usr/local/nginx/conf/nginx.conf
  
include vhost/*.conf;
  

  配置nginx虚拟主机www.iuiodp.cn.conf
  

[root@localhost ~]# cat /usr/local/nginx/conf/vhost/www.iuiodp.cn.conf  
server {
  listen       80;
  server_name  www.iuiodp.cn iuiodp.cn;
  index index.html index.htm index.php;
  root /data/www/www.iuiodp.cn;
  location ~ .*\.(php|php5)?$
  {
  #fastcgi_pass  127.0.0.1:9000;
  fastcgi_pass  unix:/tmp/php-cgi.sock;
  fastcgi_index index.php;
  include fastcgi.conf;
  }
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
  {
  expires 30d;
  }
  location ~ .*\.(js|css)?$
  {
  expires 1h;
  }
  location / {
  * contentbyluafile /usr/local/nginx/conf/lua/csu.lua;*
  }
  access_log  /data/wwwlogs/iuiodp.cn_access.log;
  
}
  

  在location段中指定csu.lu脚本路径:
  

location / {  content_by_lua_file /usr/local/nginx/conf/lua/csu.lua;
  }
  

  csu.lua脚本如下:
  

[root@localhost ~]# cat /usr/local/nginx/conf/lua/csu.lua  
local redis = require "resty.redis"
  
local cache = redis.new()
  
cache.connect(cache, '127.0.0.1', '6379')
  
local key = ngx.var.uri;
  
local res = cache:get(key)
  
if res == ngx.null then
  
local res = cache:get("/sp");
  
ngx.redirect(res)
  
else
  
ngx.redirect(res)
  
end
  

  服务器hosts文件本地解析:
  

[root@localhost ~]# grep www.iuiodp.cn /etc/hosts  
21.15.1.44 www.iuiodp.cn
  

  登录redis 写入key值:
  

[root@localhost ~]# redis-cli -h 127.0.0.1 -p 6379  
127.0.0.1:6379> get /
  
(nil)
  
127.0.0.1:6379> set / http://www.yt925.com
  
OK
  
127.0.0.1:6379> get /
  
"http://www.yt925.com"
  
127.0.0.1:6379> set /a http://www.jd.com
  
OK
  
127.0.0.1:6379> get /a
  
"http://www.jd.com"
  
127.0.0.1:6379>
  
127.0.0.1:6379> set /d http://www.test.com
  
OK
  
127.0.0.1:6379> get /d
  
"http://www.test.com"
  

  服务器上curl域名,实现了302临时跳转
  

[root@localhost ~]# curl http://www.iuiodp.cn  

  
302 Found
  

  
302 Found
  
nginx
  

  

  

  
[root@localhost ~]# curl http://www.iuiodp.cn/a
  

  
302 Found
  

  
302 Found
  
nginx
  

  

  
[root@localhost wwwlogs]# curl http://www.iuiodp.cn/d
  

  
302 Found
  

  
302 Found
  
nginx
  

  

  

  windows本地hosts文件绑定21.15.1.44 www.iuiodp.cn
  浏览器请求www.iuiodp.cn 会直接跳转到http://www.yt925.com 这个网站的页面
DSC0000.jpg

  浏览器请求http://www.iuiodp.cn/a 会直接跳转到https://www.jd.com 官网页面
DSC0001.jpg

  浏览器请求http://www.iuiodp.cn/d会直接跳转到https://www.test.com 官网页面
DSC0002.jpg

  访问日志如下:
DSC0003.jpg

  演示到此处,跳转功能已经实现,尽情关注后续的博文,后续还有精彩的内容。同时也希望大家能互相交流学习



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629767-1-1.html 上篇帖子: 非openresty方式安装Nginx + Lua + Redis 环境 下篇帖子: 十、LNMP(php redis)wordpress部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表