我想知道当有人尝试通过非 SSL 访问我们的 api.mydomain.com 时,如何在 Lighttpd Web 服务器中发回 501(未实现)的 HTTP 响应。
我们进行了检查,但是不知道如何实际发回 501 的 HTTP 响应。
$HTTP["host"] =~ "api\.mydomain\.com$" {
$HTTP["scheme"] == "http" {
//// HOW DO WE SEND BACK HTTP RESPONSE 501
}
}
答案1
lighttpd 方式:
使用配置文件,我只知道 404 错误。要发送“未实现”响应,您可以使用 lighttpd mod Magnet(并安装 LUA),然后:
在配置文件中:
$HTTP["host"] =~ "api\.mydomain\.com$" {
$HTTP["scheme"] == "http" {
magnet.attract-physical-path-to = ("/path/to/501.lua")
}
}
注意,“/path/to/501.lua” 应该可以被 lighttpd 读取。然后在 501.lua 文件中:
lighty.content = { { filename = "/path-to-your/501.html" } }
lighty.header["Content-Type"] = "text/html"
return 501
仅发送 501 就很困难...对吧?
替代方法:
如果你已经有一个插入了 fastcgi 等的动态语言,你可以实现错误响应(比如说 501.php),它执行 .lua 脚本所做的操作:
- 发送正确的 http 响应(适用于任何“网络”语言)
- 打印正确的标题(适用于任何“网络”语言)
- 打印正确的 html 或模板或静态文件(适用于任何“网络”语言)
并在需要的地方使用它们。