在X-WAF部署中,您需要创建一个新的nginx配置文件。但是,在测试nginx配置时,会发现错误并且无法启动nginx。
我参考http://blog.51cto.com/14071176/2318054吗?我根据文章中的配置逐步进行了操作,但是我遇到了问题。
root@VM-0-6-ubuntu:~# /usr/local/openresty/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: [emerg] no "events" section in configuration
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test failed
root@VM-0-6-ubuntu:~# /usr/local/openresty/nginx/sbin/nginx
nginx: [emerg] no "events" section in configuration
Run Code Online (Sandbox Code Playgroud)
在正常情况下,执行/ usr / local / openresty / nginx / sbin / nginx -t将获得两个成功,但是我的是成功和失败。
我有一些Lua代码,我在openresty nginx.conf文件中使用它.这个Lua代码包含这样的行:
...
local secret = os.getenv("PATH")
assert(secret ~= nil, "Environment variable PATH not set")
...
Run Code Online (Sandbox Code Playgroud)
出于测试原因,我试图检查是否设置了PATH变量,并且由于某种原因,断言语句没有通过.我在控制台中看到:
环境变量PATH未设置
但是,当我运行这个
$ echo $PATH
Run Code Online (Sandbox Code Playgroud)
我知道,这个变量确实有一些价值.那么,这有什么问题,我该如何解决?
我有一个使用 nginx 的反向代理设置。
Client ------> Nginx ------------------------------------> Backend Server
<------ <-----------------------------------
(I want to see the requests here)
Run Code Online (Sandbox Code Playgroud)
如何将包括从后端服务器发送到 nginx 的标头在内的 http 请求记录到文件中?
也许nginx http 代理模块中的指令之一可以帮助我做到这一点。
但我找不到任何有用的指令。
当我的应用程序中通过 HTTP 调用其他服务时,每次都会发生解析 DNS。一开始解析DNS很正常,没有超时,但过了一段时间,解析DNS超时就越来越多。单独取出超时域名,在Linux环境下使用dig命令解析,均正常。在我的 nginx.conf 文件中,resolver_timeout 60s(默认30s),resolver 8.8.8.8。我的应用程序是通过 openresty 部署的。我如何检查?
我想为我的产品设置一个单元测试环境.我在Lua的nginx上构建了一个使用mysql和redis的web应用程序.我认为虽然我是码头工人的新手,但码头工作人员会很好.我的应用程序在centos服务器(生产服务器)上运行.
我打算为mysql,redis和webapp设置不同的容器,然后在我的mac(我的开发机器是MAC)或VM中编写UT应用程序(使用Busted框架进行Lua的单元测试)来测试它.UT应用程序将与docker容器nginx通信,nginx将使用容器mysql和redis.这个好吗 ?如果是,有人可以指导我如何做到这一点?也许一些很好的链接?如果不是,那可能是更好的方法.我已经尝试过使用vagrant但是花了太多时间,这不应该是我的UT情况.
我有一个关于 NGINX 速率限制的问题。
是否可以根据 JWT 令牌的解码值进行速率限制?我在文档中找不到任何这样的信息。
或者,即使有一种通过创建纯自定义变量(使用 LuaJIT)来限制速率的方法,该变量将从我解码的 JWT 中分配一个值 - 也可以完成这项工作。问题是limit_req
模块似乎在请求到达 luaJIT 阶段之前执行,所以已经太晚了!
一个解决方案将不胜感激。
我一直在尝试找到一种方法来首先捕获环境变量 HOSTNAME,然后使用 MySQL 查询来获取我们的虚拟主机的文档根并将其返回到 Nginx conf。我们目前在 Apache 中使用它们作为动态文档根,但正在迁移到 Nginx。
示例 nginx.conf (可能看起来像这样):
server {
listen 80;
# grab Environment variable HOSTNAME
$hostname= ENV(HOSTNAME);
# execute mysql query
$doc_root = mysql(select docroot from table where host = '$hostname' );
# set document root
root /var/www/$doc_root;
Run Code Online (Sandbox Code Playgroud)
.....我正在探索使用 Lua 和https://github.com/openresty/lua-resty-mysql 但一直无法弄清楚如何才能捕获 HOSTNAME 和 mysql 查询作为变量并返回结果返回。
我的意思是在上游添加上游但不添加服务器。
这意味着我没有像这样的上游块:
upstream backend {
# ...
}
Run Code Online (Sandbox Code Playgroud)
我想动态创建一个上游块。那是这样的:
content_by_lua_block {
upstream_block.add('backend');
upstream_block.add_server('backend', '127.0.0.1', 8080);
upstream_block.add_server('backend', '127.0.0.1', 8081);
upstream_block.add_server('backend', '127.0.0.1', 8082);
upstream_block.del_server('backend', '127.0.0.1', 8080);
}
proxy_pass http://backend
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置多个 cookie,但它不起作用:
if type(ngx.header["Set-Cookie"]) ~= "table" then
ngx.header["Set-Cookie"] = {}
end
table.insert(ngx.header["Set-Cookie"], "Cookie1=abc; Path=/")
table.insert(ngx.header["Set-Cookie"], "Cookie2=def; Path=/")
table.insert(ngx.header["Set-Cookie"], "Cookie3=ghi; Path=/")
Run Code Online (Sandbox Code Playgroud)
在客户端,我没有收到任何 cookie。
我使用 Openresty 作为服务器。根据https://eclipsesource.com/blogs/2018/01/11/authenticating-reverse-proxy-with-keycloak/,我有 nginx 的配置文件。
我收到以下错误“openidc.lua:1053: authenticate(): request to the redirect_uri_path 但没有找到会话状态,客户端”
有人可以抛出一些光并尝试解决问题。
问候,安拉巴克什