Nginx目录保护、防盗链、限速及多域名处理

http://www.opsers.org/server/nginx-directory-protection-anti-hotlinking-processing-speed-and-multi-domain.html

NGiNX 是个非常优秀的HTTP 服务器软件,可以通过设置有实现许多功能,如目录保护、IP访问限制、防盗链、下载限速及设置多域名等等

一、NGINX目录保护及访问限制

Nginx保护目录的配置如下,目录密码保护文件是 /usr/local/nginx/htpasswd

location ~ /admin {
#admin为要保护的目录名称,location 的意思就是保护从网页根目录算起的admin 目录
auth_basic          ”PLEASE LOGIN”;           #就是进入资料夹时会显示的信息
auth_basic_user_file /usr/local/nginx/htpasswd; #验证用户及密码文件,我这边设定是放在 /usr/local/nginx/htpasswd
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/bbs$fastcgi_script_name;
include       fastcgi_params;
}

注意,设置目录密码保护时,请注意配置区块的位置,如果放在location ~ \.php$ {}区块后面,如果打开的是静态页面或图片等非php文件,会提示要输入密码,但是,如果打开的是php文件,则设置无效,会直接执行php文件并显示。因此,一定要注意把要设置目录密码保护的区块放在location ~ \.php$ {}区块之前。

生成密码文件:

htpasswd -b -c  /usr/locla/nginx/htpasswd username password;

二、NGINX防盗链

另外 NGiNX 防盗链,防止别人偷图(视频、flash、软件…)当然也是 OK 滴!  一样也是在 server 的区段加上

location ~* \.(txt|ico|gif|png|bmp|jpg|jpeg|zip|rar|gz|7z|exe|mp3|flv|swf)$ {
valid_referers none blocked opsers.org www.opsers.org ;
if ($invalid_referer) {
rewrite ^/ http://www.opsers.org/notlink.html;
}
}

这时候 location 的意思就是保护从网页根目录算起,所有的指定类型的文件都依照此规则
valid_referers none blocked 的意思就是不阻挡从哪些地方来的囉~ 这边以空格来分隔允许的域名或 ip 位置
$invalid_referer 的意思就是不允许连结
rewrite ^/ http://www.opsers.org/notlink.html; 的意思就是指定不允许的连结自动转向到一个页面,或是已经有设定 404 转址的也可以先注解掉这行再把 #return 404 的注解拿掉,就会自动跑到你设定的 404 页面了。

羽飞特别提醒:如何来看防盗链是否是生效的,建议大家直接看服务日志,不要拿个网站来测试。因为有些不要脸的家伙(比如百度),他会用自己的图片服务器来提供服务。就是因为这个原因,上一次我在做这个的时候,浪费了很多时间。

三、NGINX下载限速

NGiNX 还能限速再限制下载线程!  先在 http 区段找到 limit_zone,再把注释拿掉~
# 设定一个叫做 crawler 的区域,大小为 20MB

limit_zone crawler $binary_remote_addr 20m;

然后在 server 的区段加上

# 限制档案类型只能单线下载

location ~ .*\.(zip|rar|gz|tar|exe|mp3|flv|swf|jpg|jpeg)$
{
limit_conn crawler 1;
limit_rate 500k; # 再加上限速
}
# 限制特定资料夹底下只能单线下载
# location /download/ {
# limit_conn crawler 1;
# limit_rate 500k; # 再加上限速
# }

四、NGINX多域名设置

今天在配置PHP+Nginx时出现一个严重的问题,在Nginx虚拟主机上绑定了泛域名,在程序中需要用二级域名指向不同的内容,但无论如何访问都只跳转到主域名上!为了找到问题,一个一个试验,得出如下结论:不管绑定多少域名,用 $_SERVER["SERVER_NAME"] 只会返回虚拟主机中绑定的第一个域名!

比如绑定域名如下:

server_name     www.fxzc.com *.fxzc.com fxzc.com

现在我不管用什么域名访问, $_SERVER["SERVER_NAME"] 都只会返回 www.fxzc.com !!这是个很严重的问题,对泛域名造成了致命的影响!

既然有问题,就肯定有解决方案。。在wiki主翻了N久,终于找到了需要的资料!原来:$_SERVER["SERVER_NAME"] 返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默认的配置为:
fastcgi_param  SERVER_NAME    $server_name;
Nginx中 $server_name 变量就是上面设置的域名,只会返回第一个!
这下好办了,把上面的配置改成:

fastcgi_param  SERVER_NAME    $host;

就行了。

另外还需要在server_name配置后面加一行:

server_name_in_redirect off;

意思是 让 nginx 在处理自己内部重定向时不默认使用  server_name 设置中的第一个域名!
源文地址: http://www.fxzc.net/archives/nginxmulubaohufangdaolianxiansujiduoyumingchuli.html

时间: 2024-10-06 03:23:55

Nginx目录保护、防盗链、限速及多域名处理的相关文章

Linux之nginx优化与防盗链

Linux之nginx优化与防盗链 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因

防盗链Nginx设置图片防盗链,设置无效的请仔细看红字

*******************************************************************切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片.******************************************************************* 一.全站图片防盗链 在/usr/local/nginx/conf/nginx.conf文件要添加防盗链的ser

8. Nginx资源的防盗链

valid_referers 语法使用说明: http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers valid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.; if ($invalid_referer) { return 403; } valid_refe

nginx secure_link下载防盗链

下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是nginx的话,使用secure link完美解决这个问题,远离迅雷.本文仅用于下载服务器,不适用于图片防盗链. 1. 安装nginx 默认情况下nginx不会安装secure_link模块,需要手动指定,配置参数如下 # ./configure --with-http_secure_li

nginx服务器图片防盗链的方法

nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuchengxian.com www.shuchengxian.com; if ($invalid_referer) { rewrite ^/ http://www.shuchengxian.cn/404.jpg; } }</pre>代码解释: <pre>//其中“gif|jpg|jpeg|p

Nginx优化与防盗链

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发. Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理.负载平衡.但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞.所以必须使

Nginx配置:防盗链、访问控制、解析PHP以及代理

一.Nginx防盗链 防盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载,尤其热门资源的盗链,对网站带宽的消耗非常大,设置防盗链以节省资源. 1.修改虚拟主机配置文件 [[email protected] vhost]# vim linuxtest.conf server { listen 80; server_name linuxtest.com; index index.html index.htm index.php; root /data/wwwroot/linuxt

92.Nginx配置:防盗链、访问控制、解析PHP以及代理

一.Nginx防盗链 防盗链是指一个网站的资源(图片或附件)未经允许在其它网站提供浏览和下载,尤其热门资源的盗链,对网站带宽的消耗非常大,设置防盗链以节省资源. 1.修改虚拟主机配置文件 [[email protected] vhost]# vim linuxtest.conf server { listen 80; server_name linuxtest.com; index index.html index.htm index.php; root /data/wwwroot/linuxt

Nginx实现图片防盗链(referer指令)

什么是图片盗链   每张图片在浏览器中都有对应的图片地址,在浏览器中输入这个地址是可以直接拿到图片. 图片盗链,就是盗用者在他的站上需要显示我们的图片,他没有把图片拿下来,放到他的服务器上, 而是直接就用我们的,图片地址,来请求到我们的服务器来拿图片,流量产生在我们这边. referer referer指令通过检测访问图片的来源,来做出一些控制. 图片访问的来源 通过谷歌/百度访问 通过浏览器直接访问 本站点的访问 来自非法的域名访问 referer nginx 模块 ngx_http_refe