当前位置:  操作系统/服务器>linux

Nginx常用功能详解

    来源: 互联网  发布时间:2014-08-25

    本文导语:  一、NGINX目录保护及访问限制 Nginx保护目录的配置如下,目录密码保护文件是 /usr/local/nginx/htpasswd location ~ /admin { #admin为要保护的目录名称,location 的意思就是保护从网页根目录算起的admin 目录 auth_basic ”PLEASE LOGIN”; ...

一、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  www. ;
if ($invalid_referer) {
rewrite ^/ http://www./notlink.html;
}
}

这时候 location 的意思就是保护从网页根目录算起,所有的指定类型的文件都依照此规则
valid_referers none blocked 的意思就是不阻挡从哪些地方来的囉~ 这边以空格来分隔允许的域名或 ip 位置
$invalid_referer 的意思就是不允许连结
rewrite ^/ http://www./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. *.
现在我不管用什么域名访问, $_SERVER["SERVER_NAME"] 都只会返回 www. !!这是个很严重的问题,对泛域名造成了致命的影响!

既然有问题,就肯定有解决方案。。在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 设置中的第一个域名!


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 启用Nginx目录浏览功能的方法
  • nginx php-fpm环境中chroot功能的配置使用方法
  • nginx 服务器介绍
  • 实时 Nginx 分析和诊断工具 nginx-systemtap-toolkit
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • Nginx的TFS模块 nginx-tfs
  • nginx Windows版相关问题及使用说明
  • 重启或杀掉Nginx进程后丢失nginx.pid的解决办法
  • nginx最新主线开发版1.5.4发布及下载地址
  • Nginx 令牌模块 nginx-token
  • nginx最新稳定版1.4.2发布
  • Nginx文件上传模块 nginx-upload-module
  • linux/centos源码安装nginx编译配置选项参数介绍
  • Nginx 负载均衡模块 nginx-upstream-fair
  • nginx服务器基本特性及使用技巧
  • 懂nginx,帮下忙,使用nginx实现大并发
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • NGINX的流媒体插件 nginx-rtmp-module
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • nginx安装(1) ttlsa教程系列之nginx
  • linux/centos安装nginx常见错误及解决办法
  • 重启nginx后丢失nginx.pid的解决方法
  • nginx中使用nginx-http-concat模块合并静态资源文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3