通过Openresty提取具体URI,代理到指定BackendServer,以解决CORS问题,
一、问题场景
Browser请求https//biz4h5.company.com/xxx/yyy
而biz4h5.company.com要访问前后台分离的后台接口,https//biz4api.company.com/aaa/bbb
如果biz4h5.company.com和biz4api.company.com的解析ip不同,会导致CORS问题,关于CORS
的具体产生,可参考本人另一篇文章。
注意:CORS三要素,protocol,ip,port有一者不同,就会导致CORS
通过biz4h5.company.com所在的Openresty,统一代理到后台节点,改为如下方式:
https//biz4h5.company.com/xxx/yyy =>访问H5资源
https//biz4h5.company.com/backendapi/aaa/bbb =>访问后台接
口,https//biz4api.company.com/aaa/bbb
二、样例代码如下:
location / {
proxy_pass http://yourbackendserver;
if ( $request_uri ~* ^\/backendapi\/(.*) ) {
content_by_lua '
local raw_uri = ngx.var.uri
local sent_uri = string.gsub(raw_uri, "(/%w+)", "", 1)
ngx.req.set_header("host", "biz.company.com")
ngx.req.set_uri(sent_uri)
ngx.exec("@gateway")
';
}
location @gateway{
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header remote_addr $remote_addr;
proxy_pass https://biz.company.com:5443;
}
# the following codes have been escaped
}
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
然而,它在处理URI参数时存在一个安全漏洞,即CVE-2018-9230,该漏洞允许远程攻击者绕过基于OpenResty的安全防护措施,影响到使用OpenResty的多款开源Web应用防火墙(WAF)。 漏洞的根本原因在于OpenResty的两个...
OpenResty社区提供了丰富的资源,包括文档、示例代码和第三方模块,帮助开发者快速上手并解决遇到的问题。 总之,OpenResty 1.25.3.1是一个强大的Web开发框架,它融合了Nginx的高性能和Lua的灵活性,为构建高性能、...
《OpenResty最佳实践》是一本深入...总的来说,《OpenResty最佳实践》全面而深入地阐述了OpenResty的使用技巧和优化策略,是每个OpenResty开发者不可或缺的参考资料,有助于提升开发效率,优化系统性能,解决实际问题。
解决这个问题的关键在于更新OpenResty到修复了此漏洞的新版本,或者在应用层面增加额外的检查,限制请求参数的数量和类型,防止恶意输入。此外,开发人员应当注意对所有输入进行严格的验证和清理,以确保即使在...
OpenResty是一款集成了Nginx和LuaJIT的服务器软件,能够以高效的事件驱动模型处理高并发请求。在OpenResty中,开发者可以利用Lua脚本来实现复杂的业务逻辑,同时使用其内置的高性能缓存机制来提升应用程序的性能。 ...
读者会学习到如何利用OpenResty进行反向代理、负载均衡、缓存管理等常见的Web服务任务。此外,书中还会深入讲解OpenResty的API接口,包括Nginx的HTTP模块、Stream模块,以及Lua API,帮助读者熟悉OpenResty的核心...
OpenResty是一个基于Nginx和LuaJIT的全功能Web平台,它将Lua脚本语言嵌入到Nginx服务器中,可以用来构建动态的Web应用和高性能Web服务。《OpenResty最佳实践》这本书籍,旨在向读者介绍OpenResty的使用方法和最佳...
标题 "配合openresty使用waf模块" 涉及的核心技术是Web应用程序防火墙(Web Application Firewall,简称WAF)以及如何将其与OpenResty集成。OpenResty是一款基于Nginx的全功能Web服务框架,它集成了LuaJIT编程语言,...
OpenResty是一种基于Nginx的高性能Web平台,它通过集成LuaJIT来为Nginx提供强大的可编程能力。OpenResty允许开发者以极高的性能实现复杂的Web应用,且能够处理数以万计的并发连接。因此,OpenResty在处理大量HTTP...
OpenResty通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的...
通过以上内容的学习和实践,可以了解到OpenResty不仅是一款强大的Web平台,还能够在各种应用场景中发挥重要作用。从简单的安装过程到复杂的项目案例,我们都能看到OpenResty及其相关技术的强大功能和灵活性。无论是...
OpenResty是一款基于Nginx与LuaJIT的高性能Web平台,它集成了大量开源的高性能库,使得开发者能够利用Lua脚本语言快速构建出强大的动态Web应用。在这个压缩包"openresty-1.19.9.1.tar.gz"中,包含的是OpenResty的...
OpenResty 的核心是 Nginx,一个著名的反向代理服务器和负载均衡器,以其高性能和低内存占用而闻名。通过结合 LuaJIT,OpenResty 将动态脚本能力引入了 Nginx,使得开发者能够构建出高性能的 RESTful API 服务、Web ...
OpenResty是一款基于Nginx与Lua的高性能Web平台,它将强大的Lua脚本语言嵌入到Nginx中,使得开发者可以利用Nginx的高效能来处理复杂的Web应用逻辑。Ansible则是一种自动化运维工具,能够简化服务器配置、软件部署...
安装完成后,你可以在指定的安装路径下找到OpenResty的可执行文件和配置文件,如`nginx`二进制文件,以及`conf`目录下的默认配置文件。 OpenResty支持丰富的模块扩展,如lua-nginx-module,用于在Nginx配置文件中...
了解如何使用OpenResty的高级特性,比如LuaRestyDNSLibrary、LuaRestyLock、stream_lua_module和TCP代理负载等,能够帮助开发者解决更复杂的问题。 ### OpenResty周边工具 最后,对于OpenResty的周边工具,如...
- **API Server 构建**:通过具体的示例讲解如何构建一个简单的 API 服务器框架。 - **与其他 location 配合**:讨论如何在 Nginx 的不同配置块之间进行协作。 - **获取和处理请求数据**:解释如何从客户端请求中...
OpenResty 在直播领域中的应用 OpenResty 是一个基于 Nginx 的高性能 Web 服务器,可以提供高效、可靠、可...但是,OpenResty 在直播领域中的应用也存在一些问题和优化项目需求,需要通过优化方案来提高性能和可靠性。