GET和POST是最常用的方法。Web服务器的方法被定义在RFC 2616。如果Web服务器不要求启用所有可用的方法,它们应该被禁用。下面的指令将过滤只允许GET,HEAD和POST方法:
##Only allow these request methods##
if($request_method !~ ^(GET|HEAD|POST)$){
retrun 444;
}
##Do not accept DELETE,SEARCH and other methods##
如何拒绝一些User-Agents?
##Block download agents ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget){
retrun 403;
}
##
组织Soso和有道的机器人:
##Block some robots ##
if ($http_user_agent ~* Sosospider|Yodaobot){
retrun 403;
}
目录限制
可以对指定的目录设置访问权限。所有的网站目录应该一一配置,只允许必须的目录访问权限。
可以通过IP地址来限制访问目录/admin/:
location /docs/ {
##block one workstation
deny 192.168.1.1;
## allow anyone in 192.168.1.0/24
allow 192.168.1.0/24;
##drop rest of the world
deny all;
}
通过密码保护目录
首先创建密码文件并增加“user”用户:
mkdir /usr/local/nginx/conf/.htpasswd/
htpasswd -c /usr/local/nginx/conf/.htpasswd/passwd user
编辑nginx.conf,加入需要保护的目录:
###Password Protect /personal-images/ and /delta/ directories###
location ~ /(personal-images/./delta/.){
auth_basic "Restricted";
auth_basic_user_file /usr/local/nginx/conf/.htpasswd/passwd;
}
密码文件生成后,也可以用以下的命令来增加允许访问的用户:
htpasswd -s /usr/local/nginx/conf/.htpasswd/passwd userName
Nginx SSL配置
HTTP是一个纯文本协议,它是开放的被动监测。应使用SSL来加密你的用户内容。
创建SSL证书
执行以下命令:
cd /usr/local/nginx/conf
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
编辑nginx.conf并更新:
server{
server_name example.com;
listen 443;
ssl on;
ssl_certificate /user/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
access_log /usr/local/nginx/logs/ssl.access.log;
error_log /usr/local/nginx/logs/ssl.error.log;
}
重启nginx:
/usr/local/nginx/sbin/nginx -s reload
在防火墙级限制每个IP的连接数
网络服务器必须监视连接和每秒连接限制。PF和Iptables都能够在进入nginx服务器之前阻止最终用户的访问。