在Nginx服务器上限制或禁用不需要的HTTP方法(如TRACE、DELETE等)是提高服务器安全性的重要措施。以下是几种实现方式:
location / {
limit_except GET POST HEAD {
deny all;
}
}
这个配置只允许GET、POST和HEAD方法,其他方法都会被拒绝并返回403错误。
location / {
if ($request_method !~ ^(GET|POST|HEAD)$ ) {
return 405;
}
}
这种方法使用正则表达式匹配允许的方法,不匹配的返回405 Method Not Allowed。
location / {
if ($request_method = TRACE ) {
return 405;
}
if ($request_method = TRACK ) {
return 405;
}
if ($request_method = DELETE ) {
return 405;
}
}
map $request_method $method_allowed {
default 0;
GET 1;
POST 1;
HEAD 1;
# 其他允许的方法
}
server {
location / {
if ($method_allowed = 0) {
return 405;
}
}
}
可以使用curl命令测试配置是否生效:
curl -X TRACE http://yourserver.com
curl -X DELETE http://yourserver.com
正确的配置应该返回405或403错误。
记得在修改Nginx配置后重新加载配置:
nginx -s reload