一、用户认证
用户认证功能是利用Apache的工具htpasswd生成的密钥,所以需要安装Apache的这个工具即可,我们用yum来安装就可以。
[[email protected] ~]# yum install -y httpd-tools [[email protected] ~]# htpasswd -cm /usr/local/nginx/conf/.htpasswd mydiscuz New password: Re-type new password: Adding password for user mydiscuz [[email protected] ~]# cat /usr/local/nginx/conf/.htpasswd mydiscuz:$apr1$ejPLa15T$kuyykf8at2I77oogZ0kUz1
修改配置,主要是修改server模块
location / { auth_basic "Closed"; auth_basic_user_file .htpasswd; <== 这里要注意加密文件的路径 }
二、静态文件缓存
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; access_log off; } location ~ .*\.(js|css)?$ { expires 12h; access_log off; }
三、防盗链
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ { valid_referers none blocked server_names *.taobao.com *.baidu.com *.google.com *.google.cn *.soso.com ; if ($invalid_referer) { return 403; # rewrite ^/ http://www.example.com/nophoto.gif; } }
四、域名重定向
if ($host != ‘bbs.a.com‘ ){ rewrite ^/(.*)$ http://bbs.a.com/$1 permanent; }
五 、日志切割
因为Nginx没有自动切割日志功能,所以需要手动编辑脚本
编写脚本:vim /usr/local/sbin/logrotate.sh //加入
#! /bin/bash datedir=`date +%Y%m%d` /bin/mkdir /home/logs/$datedir >/dev/null 2>&1 /bin/mv /home/logs/*.log /home/logs/$datedir /bin/kill -HUP `cat /var/run/nginx.pid`
六、设置日志记录的内容
日志格式化
log_format main ‘$remote_addr - $remote_user [$time_local] $request ‘
‘"$status" $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
log_format main1 ‘$proxy_add_x_forwarded_for - $remote_user [$time_local] ‘
‘"$request" $status $body_bytes_sent ‘
‘"$http_referer" "$http_user_agent"‘; //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。
七、访问控制
限制只让某个ip访问
allow 219.232.244.234;
deny all;
禁止某个IP或者IP段访问站点的设置方法
首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip
cat deny.ip
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;
在nginx的配置文件nginx.conf中加入:
include deny.ip;
重启一下nginx的服务:/usr/local/nginx/sbin/nginx reload 就可以生效了。
deny.ip 的格式中也可以用deny all;
如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
那需要你在deny.ip 中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;
有时候会根据目录来限制php解析:
location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$
{
deny all;
}
八、使用 user_agent 控制客户端访问
location /
{
if ($http_user_agent ~ ‘bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315‘){
return 403;
}
}
九、Nginx代理
server {
listen 80;
server_name aaa.com;
location / {
proxy_pass http://2.2.2.2/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# access_log /home/logs/aaa_access.log combined;
}