首页 » 系统攻防 » Linux » 浏览内容

Nginx目录保护网站防盗链及多域名处理

710 0 发表评论

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

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

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

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

因此,一定要注意把要设置目录密码保护的区块放在location ~ \.php$ {}区块之前。
生成密码文件:

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

这时候 location 的意思就是保护从网页根目录算起,所有的指定类型的文件都依照此规则
valid_referers none blocked 的意思就是不阻挡从哪些地方来的囉~这边以空格来分隔允许的域名或 ip 位置

$invalid_referer 的意思就是不允许连结
rewrite ^/  的意思就是指定不允许的连结自动转向到一个页面,或是已经有设定 404 转址的也可以先注解掉这行再把 #return 404 的注解拿掉,就会自动跑到你设定的 404 页面了。


特别提醒:如何来看防盗链是否是生效的,建议大家直接看服务日志,不要拿个网站来测试。

因为有些不要脸的家伙(比如百度),他会用自己的图片服务器来提供服务。

就是因为这个原因,上一次我在做这个的时候,浪费了很多时间。


三、NGINX下载限速
NGiNX 还能限速再限制下载线程!  先在 http 区段找到 limit_zone,再把注释拿掉~


四、NGINX多域名设置

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


比如绑定域名如下:
server_name     www.exehack.net *.exehack.net
现在我不管用什么域名访问, $_SERVER[“SERVER_NAME”] 都只会返回 www.exehack.net !!这是个很严重的问题,对泛域名造成了致命的影响!

解决方法:
原来:

返回的值是由 Nginx 的 fastcgi_param 中 SERVER_NAME 提供的,而默认的配置为:

Nginx中 $server_name 变量就是上面设置的域名,只会返回第一个!
这下好办了,把上面的配置改成:

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

意思是 让 nginx 在处理自己内部重定向时不默认使用  server_name 设置中的第一个域名!

总而言之多多关注系统安全确保减少服务器负担,是每一个站长必做的功课。

标签:

评论 共 0 条 (RSS 2.0) 发表 评论

  1. 暂无评论,快来抢沙发!

发表评论

  •   没有头像?

关注我们,实时联系

通知公告">更多...

♥如果喜欢本站可以直接点击订阅博客
♥点击此加入晓残博客会员群加入扣群
♥本站免费提供加密解密服务点击解密
♥伙伴们喜欢本站赏个好评呗

关注微信

有偿服务

博客统计

  • 日志总数:477 篇
  • 评论数目:1474 条
  • 标签总数:40 个
  • 页面总数:8 个
  • 分类总数:17 个
  • 友链总数:24 个
  • 建站日期:2011-02-13
  • 运行天数:2124 天
  • 最后更新:2016-12-6

订阅博客