js映射 nginx_企业级电商网站使用Nginx+Lua(OpenResty)实现高性能Web应用

news/2024/5/9 10:23:56/文章来源:https://blog.csdn.net/weixin_42290401/article/details/112266750
94404cc7678c4b8d0bc2409c07516faa.png

简介

OpenResty是一款基于Nginx的高性能负载均衡服务器容器,简单来说是Nginx+Lua。结合了Lua语言来对Nginx进行扩展,使得在Nginx上具有web容器功能。

使得可以使用lua脚本来进行web的开发。有了lua,我们可以借助于nginx的异步非阻塞的功能,达到使用 lua 异步并发访问后端的 MySQL, Memcached, Redis等等服务。

OpenResty 架构的web可以轻松超越Node.js的性能,并且对后端语言没有限制,你可以使用Java/PHP/Python等等各种语言。OpenResty(nginx+lua)可以替代node.js的前端渲染的功能。

电商网站使用场景

电商网站pcwap首页及商品详情页生成静态页后,存储Redis上,然后通过OpenResty(nginx+lua脚本)从Redis读取静态页,前端渲染,展示给用户。提升页面访问速度及高并发。

OpenResty运行环境搭建

这里采用docker方式安装

拉取镜像

docker pull openresty/openresty:1.15.8.2-7-centos

启动openresty

端口映射为 8081,映射配置目录便于修改配置

docker run --rm -d --name openresty -p 8081:80 -v /opt/deploy-script/openresty/:/usr/local/openresty/nginx/conf/ openresty/openresty:1.15.8.2-7-centos

编写lua脚本

在/opt/deploy-script/openresty/lua 目录下 新建.lua 文件,并添加如下内容

local request_uri = ngx.var.uri local redis = require "resty.redis"local red = redis:new()--red:set_timeout(10000) -- 1 seclocal ok, err = red:connect("实际ip", 6379)if not ok then    ngx.say("failed to connect: ", err)    returnend--如果设置了密码请打开注释,并填写密码local res, err = red:auth("实际密码")if not res thenngx.say("failed to authenticate: ", err)returnendlocal res, err = red:get(request_uri)-- 请修改https://www.test.com 为实际配置域名或IP端口if res == ngx.null thenngx.say(request_uri)    -- ngx.redirect("http://实际ip/404.html")   returnendif not res then    ngx.say("failed to get: " .. request_uri , err)    returnendred:set_keepalive(6000,1000)ngx.say(res)

在/opt/deploy-script/openresty 目录下 新建nginx.conf文件,并添加如下内容

#新建静态页输出节点,content_by_lua_file为lua脚本实际路径。   server {        listen       80;        server_name  localhost;         #pc端静态响应        location /PC {           default_type text/html;           content_by_lua_file "/usr/local/openresty/nginx/conf/lua/single_connector.lua";            #redis集群请使用此配置            #content_by_lua_file "/usr/local/openresty/nginx/conf/lua/cluster_connector.lua";          }        #wap端静态响应        location /WAP {           default_type text/html;           content_by_lua_file "/usr/local/openresty/nginx/conf/lua/single_connector.lua";            #redis集群请使用此配置           #content_by_lua_file "/usr/local/openresty/nginx/conf/lua/cluster_connector.lua";          }    }

重启openresty

验证

首先在redis中执行如下命令:

set /PC/index.html 'hello pc'set /WAP/index.html 'hello wap'

然后分别访问:

http://ip:8081/PC/index.htmlhttp://ip:8081/WAP/index.html

实际应用是在应用系统后台,商品上架时触发,根据详情页模板读取动态数据,生成商品详情页,然后详情页保存到redis,通过lua读取渲染展示给用户查看。

实际效果如:

47c978405fcd115d47e6de145257d049.png

基于Nginx+Lua的总结

个人认为适合开发业务逻辑单一、特定性能提升场景、核心代码行数较少的应用,不适合业务逻辑复杂、功能繁多的业务型或者企业级应用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_780338.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑服务器系统进入安全模式,win7系统开机按F8键不能进入安全模式怎么办_网站服务器运行维护,win7,F8,安全模式...

win10系统关机后仍然耗电怎么办_网站服务器运行维护win10系统关机后仍然耗电的解决方法:1、首先打开电源选项;2、然后依次点击【选择电源按钮的功能】、【更改当前不可用的设置】;3、最后取消勾选【启用快速启动】选项。解决方法:…

网站同时出现网站内容和html源码是什么原因_十分钟小白就能搭建好一个属于自己的个人网站...

很多人觉得搭建一个网站很难,因为自己不懂代码,在这里教你不需要懂代码也能搭建一个属于自己的网站搭建一个网站必备2条件1.服务器2.域名简单的来说服务器就是跟你个人的电脑一样,只不过是用来做访问服务的那么服务器能搭建网站, 个人电脑也是可以的, 无论是服务器还是个人电脑…

可以发外链的网站_到哪里发外链比较好

不管是软文外链,还是网站的外链,或者是网页的外链,增加外链的目的就好像是你开了一个店,需要不断的去做广告别人才能知道在这个地方你开了一个店,你的店里卖什么东西?对于开店而言,你所做的广告…

仿小蚂蚁门户网站 php,仿小蚂蚁大气地方门户模版Discuz! X2.5

下面我们对仿小蚂蚁大气地方门户模版Discuz! X2.5文件阐述相关使用资料和仿小蚂蚁大气地方门户模版Discuz! X2.5文件的更新信息。仿小蚂蚁大气地方门户模版Discuz! X2.51. 基本文件说明:template (风格文件)、fgoo_static(风格需要的图片和JS文件)、PSD分层文件、fg…

网站信息泄漏防护篇

网站信息泄漏防护篇simeon每天您是否收到数封垃圾邮件,每天您是否接到无数“骚扰”电话,每天您是否会收到数条垃圾短信,也许三个也许中都是肯定,这一切毫无例外都会耗费您生命中的时间,可是您是否曾经深入思考过为什么…

12个网站帮你制作个性化的卡通形象

从QQ秀的流行程度我们可以看出国内网友对卡通形象的热爱.我们在大部分可以自定义个人资料的网站上一般不会上传真实的图片,一个独具个性的卡通形象也许会更加具有吸引力.我之前介绍过一个新兴的网站Befunky,从索要邀请的人数来看,这的确是一个非常有人气的服务.下面介绍的11个卡…

UML辅助网站规划和设计指南/1

概述 Web网站往往具有复杂与高度动态的特点。为了让Web应用在短时间之内开始运作,开发周期应该尽量地短。许多时候,开发者直接进入编写代码这一阶段,却不去仔细考虑自己想要构造的是什么样的网站以及准备如何构造:服务器端代码往往…

网站优化的几个方面

充分利用网页标题这适用于网页本身的主标题,也适用于浏览器标题栏中出现的标题。无论何时,要尽可能确保每一张网页都带有独一无二、可描述网页特征的标题。举例说明,如果您的网站是"Buffy 沙发商店",访问者或许希望将您…

在浏览器中输入网站域名并按下回车的详细过程

主要有以下几个部分: 1 DNS解析,获取Web服务器IP 2 建立TCP连接 3 向Web服务器发送HTTP请求 4 Web服务器收到请求并处理 5 Web服务器返回响应 6 浏览器对响应解码,并显示数据 7 页面显示完成后,浏览器发送异步请求 8 关闭TCP连接 …

【web标准设计】学习、提高、欣赏网站推荐

警告文章包含的一些粗俗、庸俗、恶心的言语可能造成您阅读后的不适感,请谨慎选择是否阅读。如你自愿阅读本文,因粗俗、庸俗、恶心的言语给您所造成的任何后果,本文作者不负任何责任。 华丽的中指基础知识的学习 XHTML、CSS、JavaScript的基础…

30个让人兴奋的视差滚动(Parallax Scrolling)效果网站

视差滚动(Parallax Scrolling)是指让多层背景以不同的速度移动,形成立体的运动效果,带来非常出色的视觉体验。作为今年网页设计的热点趋势,越来越多的网站应用了这项技术。今天这篇文章就与大家分享30个视差滚动效果的…

向网页设计师推荐15个很棒的网站

网络上各种各样的社区网站数不胜数,但专注于创意设计的很少。今天这篇文章收集了15个非常好的专注于设计的网站推荐给设计师们,不管是学习先进的设计理念,还是寻找免费资源与工具,这些网站都是很不错的去处,记得推荐和…

【转载】Asp.Net MVC3网站并成功的连接了MongoDB

http://www.cnblogs.com/leo_wl/archive/2012/02/10/2345890.html 我们已经创建了一个简单的Asp.Net MVC3网站并成功的连接了MongoDB。但只实现了创建和显示的功能。本回实现了完整的增删改查。 创建的部分,上次的代码中存在一些错误,造成了每个属性都会…

关于window2003服务器网站访问缓慢!

2019独角兽企业重金招聘Python工程师标准>>> 最近几天发现网站访问缓慢,有时会出现超时,检查后发现没有受到攻击,ping tracert 都很正常,最好发现需要磁盘整理,经过整理后正常了,待观察!!!!!!!! 转载于:https://my.oschina.net/yangalbert/blog/64684

Piwik 1.8.4 发布,网站访问统计系统

Piwik 1.8.4 发布,该版本主要是 bug 修复,显著降低中大型网站的内存占用,另外包含一些新特性和可用性的提升,详细的改进记录请看此处的图文说明。 注意:这个版本包含一些数据库结构的改动,请小心运行更新脚…

Linux怎么运行lisp,Lisp - Ubuntu 中的编程语言_Linux编程_Linux公社-Linux系统门户网站...

LispLisp 语言在2010年6月编程语言排行榜中排名第十六位。下面就是 GregorianTest.lisp 程序:安装 GNU Common Lisp 软件包,gcl 可以作为交互窗口,也可编译源程序(使用 –compile 参数),还可以解释执行(使用 –f 参数)&#xff1a…

浅谈网站流量劫持防范措施

前几天上网打开163首页时,发现页面底部莫名其妙的出现一个边框。这在以前可是未曾有过的,而且以后也绝不可能会有这么丑陋的设计。 趋于好奇心,立刻在边框上点了右键审查元素。尼玛,不看不知道,网易首页的HTML何时变得…

恶搞别人电脑输入百度网址出现搜狐的网站--关于Hosts文件一些运用

在学习搭建Web服务器和Apache服务器的原理和运用的时候,用到了虚拟主机技术.于是就涉及到了Hosts文件.然后就小小学习了一点点.然后觉得挺好玩的.下面给分享一下这个文件的作用和一些简单的运用.首先科普一下,hosts文件的定义. Hosts是一个没有扩展名的系统文件,可以…

Java系的大网站架构-LinkedIn和淘宝

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份…

Nginx配置虚拟机网站根目录

为什么80%的码农都做不了架构师?>>> 今天一个网友叫我帮他在我的vps上配置nginx虚拟机时,发现我更改虚拟机的根路径后,nginx只会执行,nginx默认的配置的根目录下的index.php,但是index.html的,…