我目前正在尝试让 nginx 在发送某种 50* 错误时向响应添加标头。我已经在 http 块上有一个 add_header 指令,除了它似乎是错误之外,所有请求都会得到尊重。我还在其中一个 vhost 中尝试了以下操作:
location /mediocregopheristhecoolest {
add_header X-Test "blahblahblah";
return 502;
}
Run Code Online (Sandbox Code Playgroud)
转到该页面会给我一个 502,但没有标题。这只是 nginx 不做的事情,还是我做错了?
我有一个脚本,它 rsync 是大约 10 个远程服务器的本地目录。它基本上有一个服务器列表,并通过它们中的每一个进行 rsync 循环。为了加快这个过程,我为每个 rsync 分叉,以便所有 10 个并行发生。问题是最后几台服务器返回“ssh_exchange_identification:连接被远程主机关闭”。单独或串行执行 rsync 时不会发生这种情况,并且在每个 rsync 之间放置半秒延迟可以解决问题(通常,有时列表中的最后一个服务器仍会返回错误)。
有谁知道为什么会发生这种情况?我认为这是 rysnc 的问题,而不是我的脚本,因为无论如何脚本只是对 rysnc 进行系统调用。
基本上我写了几本食谱,目前它们都复制了相同的定义文件。显然,这是一个糟糕的情况,因为它使添加新说明书变得更加困难,并且更改该定义文件需要更改三个或四个其他文件以使其完全相同。
有没有办法,如果我有一个单独的食谱,目的是基本上只包含该定义,我可以将该定义文件导入到需要它的食谱中?
我在服务器(包含 lua 模块的 nginx 包)上设置了 openresty,我正在尝试创建一个脚本,该脚本具有在用户浏览器上设置 cookie 的特定几率。我的代码如下所示:
location =/index.php {
set $random_num 0;
rewrite_by_lua '
marth.randomseed(1);
nvx.var.random_num = math.random(0,3);
';
add_header Set-Cookie "random_num=$random_num; path=/; domain=...com;";
}
Run Code Online (Sandbox Code Playgroud)
我知道我的随机种子函数实际上并不是很随机,但我想我稍后会处理。目前我只是想让 nginx 设置一个随机数,但这样做会产生这个错误:
2012/07/11 11:27:20 [error] 5492#0: *44 lua handler aborted: runtime error: [string "rewrite_by_lua"]:3: attempt to ind
ex global 'marth' (a nil value)
stack traceback:
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么,是否还有其他方法可以在 nginx 中获取随机数?
我要进行的设置如下:我希望 nginx 在 /test 子目录中查找文件,如果不存在,则从正常的 uri 提供该文件。我认为使用 try_files 这会相当简单。这是我想出的设置:
server {
listen 80;
server_name test-server;
location / {
root /opt/www;
index index.php;
try_files /test$uri $uri;
}
}
Run Code Online (Sandbox Code Playgroud)
这事半功倍。如果我访问http://test-server/something,并且有一个 /test/something 文件,它将提供 /test/something 文件。但是,如果没有 /test/something 文件,但有 /something 文件,则会返回 500 Internal Server 错误。我最好的猜测是存在某种递归循环,但我不知道替代方案是什么。