问题标签 [openresty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nginx - How can Openresty get the socket port in proxy server between prroxy server and upstream server?
I use OpenResty® to proxy my backend server. The process is client->proxy server->backend server
The question is the comment of the code:
Client sends a message to proxy server, then proxy server forwards the message to backend server.The proxy server will new a socket to connect the backend server, so how to get the proxy server socket port between proxy server and backend server in content_by_lua_block?
nginx - 通过 Nginx 重写 WebSocket 消息?
是否可以重写通过 Nginx 代理的 websocket 消息的内容?
例如,假设我发送了一条包含内容的消息JSON.stringify({ auth: 'someIdKey' })
。在 Nginx 上,我会替换 to 的值someIdKey
,someJwt
然后将其转发到代理的上游资源。当上游资源将消息发送回客户端时,我还想进行反向翻译。
我知道如何为 HTTP 请求执行此操作(并且正在执行此操作),重写自定义标头以进行即时翻译,但我不确定如何将模式传递给 websocket 通信。
我使用OpenResty作为我的 Nginx 发行版,并且在 Lua 脚本方面还算不错。
将不胜感激任何想法/帮助。
nginx - openresty:将 int64 转换为字符串
我将 openresty/1.7.7.2 与 Lua 5.1.4 一起使用。我收到int64的请求,我将它的字符串格式保存在数据库中(无法更改数据库架构或请求格式)。我无法匹配他们两个。
如果可能的话,有没有办法将 int64 转换为字符串,反之亦然?
更新:
我i
从 protobuf 对象中获取。proto 文件描述i
为 int64。我正在使用pb4lua
protobuf 库。
nginx - 如何根据 HTTP 操作和 URL 前缀路由到 content_by_lua nginx 指令?
我想默认将发送到我的 nginx 服务器的所有请求路由到我的后端应用程序,但有选择地将带有 GET HTTP 动词的 API 请求发送到由content_by_lua
nginx 指令支持的基于 OpenResty Lua 的 REST API。
我成功地能够使用以下配置根据 URL 前缀将所有 API 请求路由到 Lua API(请注意,这不考虑 HTTP 动词):
但是,正如我上面所说,我想进一步限制 API 请求,以便使用除 GET 之外的 HTTP 动词的任何请求(如 POST、PUT、DELETE 等)仍被路由到后端,而单独的 GET 请求被路由到 Lua API 位置。
根据其他一些帖子、博客和文档(并且听说该if
指令不受欢迎),我尝试使用limit_except
指令,但随后 nginx 服务器在启动时崩溃,因为该content_by_lua
指令似乎不是为limit_except
块设计的。这是我的尝试:
很快就崩溃了
在委托给指令时,基于 URL 前缀和HTTP 动词有选择地在 nginx 中路由的最佳方法是什么?content_by_lua
module - OpenResty require 找不到模块
在 Apache 惨遭失败后,我决定走 OpenResty 路线。到目前为止,Lua 代码正在执行,但是我选择将生成分成多个模块,以使代码更具可读性。
我尝试了几种要求文件的方法;- 我已从 /scripts/ 目录中取出一个文件,并将其移至根目录,但找不到文件 - 我已尝试在 /scripts/ 目录中引用 /scripts/ 提前一段时间,但一切都无济于事. 根本找不到模块。
我需要某种特殊的技巧来找到这些文件吗?
以下是错误日志的摘录:
openresty - 为什么我不能设置多个cookie
我正在尝试设置多个 cookie,但它不起作用:
在客户端上,我没有收到任何 cookie。
nginx - 理解 Nginx+OpenResty 中内联 Lua 代码中字符串的引用
为了测试,我需要使用OpenResty在 Nginx 服务器中创建一些假数据。我需要创建一个复制一个 IP 地址的数组,例如:
在 Ruby 中,实现可能如下所示:
我是 Lua 的初学者,为了让它在 OpenResty 环境中工作,我付出了很多努力。这似乎终于奏效了:
我在字符串引用方面遇到了一些问题。首先,我尝试'"1.2.3.4"'
了,它在内联 Lua 部分中不起作用。这是可以理解的,因为该'
字符已经是该content_by_lua
部分的分隔符。
接下来,我尝试"\"1.2.3.4\""
了,我希望它可以工作,但它导致了这个(令人困惑的)错误:
通过反复试验,我发现如果使用双引号 ( "\\"1.2.3.4\\""
),这个错误就会消失。这在 OpenResty 中有效,尽管如果我在Lua REPL中尝试相同的代码会被拒绝:
为了帮助我理解并成为一个更好的 Lua/OpenResty 程序员,我有一些关于引用的问题:
- 为什么需要双引号(在 OpenResty 中)?(为什么
"\\"1.2.3.4\\""
而不是"\"1.2.3.4\""
?) - 为什么 OpenResty 的行为与 Lua REPL 不同?
- 是否可以在
content_by_lua
部分中使用单引号?(将其简化为'"1.2.3.4"'
)
(另外,一个不相关的问题困扰着我。有没有更简单的方法来表达代码?当我将它与我的 Ruby 片段进行比较时,我很确定它也可以在 Lua 中更优雅地表达。)
nginx - Openresty Hello world with docker
我正在尝试让我的应用程序 dockerize 因为我一直在关注官方的 openresty dockerfile。我系统中的操作系统是 Ubuntu 16.04 64 位。
我已经使用这个 cmd 提取了该图像。
现在我想使用这个图像并想要制作简单的 hello world 应用程序。为此,我创建了我的工作目录,创建了一个自定义 dockerfile 并用它构建了我的自定义映像。最后我运行那个图像。以下是我的 dockerfile 内容。
nginx.conf
应用程序.lua
构建镜像
docker build -t user/openresty .
启动容器
当我尝试启动容器时,它给了我一个类似 nginx: invalid option: "/bin/sh" 的错误
我不知道我的方向是对还是错。
更新:
我刚刚使用了这个 CLI,它开始显示我创建的 index.html。我再次尝试使用下面的 CLI 链接我的自定义 nginx.conf,但它不起作用。
docker run -it -p 8888:8888 -v $(pwd):/app openresty/openresty:1.11.2.3-xenial -p /app -c nginx.conf
使用以下命令它开始工作,但有人可以解释一下吗?
nginx - nginx 未知指令“ssl_certificate_by_lua_block”错误
我刚刚安装了openresty 1.9.15.1 并想尝试ssl_certificate_by_lua_block
指令。
但我得到一个错误说
[emerg] 13854#0:/etc/nginx/nginx.conf 中的未知指令“ssl_certificate_by_lua_block”
当我使用重新加载 nginx 时,错误消息将写入错误日志/etc/init.d/nginx reload
。
但奇怪的一点是控制台说ok
重载操作。
nginx -t
说我的 nginx.conf 语法没问题。
我的 nginx.conf 的一部分看起来像这样:
这是我的 nginx 的版本:
我安装的 openresty 有什么问题吗?
安装文件说
强烈建议使用集成了 Nginx、ngx_lua、LuaJIT 2.1 以及其他强大的 Nginx 模块和 Lua 库的 OpenResty 版本。
这就是为什么我认为ssl_certificate_by_lua_block
一旦安装了 openresty 就可以使用。
postgresql - 从 lapis 连接到 postgresql
我决定使用 lapis - https://github.com/leafo/lapis,但是当我尝试使用输出查询数据库(PostgreSQL)时应用程序丢失:
2017/07/01 16:04:26 [错误] 31284#0: *8 lua 入口线程中止:运行时错误:尝试跨 C 调用边界堆栈回溯:协程 0:[C]:在函数“要求”中/usr/local/share/lua/5.1/lapis/init.lua:15: 在函数'serve' content_by_lua(nginx.conf.compiled:22):2: 在函数中,客户端:127.0.0.1,服务器:,请求:“GET / HTTP/1.1”,主机:“localhost:8080”
导致错误的代码:
配置.lua:
数据库正在运行,表已创建,表 1 中有一条记录。
可能是什么问题呢?