Nginx常用功能详解

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

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

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

(0)

相关推荐

  • Nginx防盗链的配置方法

    处于服务性能的考虑,我们通常把HTML静态资源按照不同类型划分存放在多台服务上. 如果拓扑图: 超文本传输协议中的Referer作用 Referer:null    表示请求者直接访问 Referer:blocked  一般为防火墙设备添加的 Referer:URL      表示URL中的主机告诉请求者的间接访问 图中jpg.good.com显然是一台专门用户存放图片的服务器,而www.good.com是一台WEB服务器,从域名可以看出必然是一家公司,条件: 1.只允许访问www.good.c

  • Nginx防盗链的3种方法

    一:一般的防盗链如下: 复制代码 代码如下: location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked www.jb51.net jb51.net ; if ($invalid_referer) { rewrite ^/ http://www.jb51.net/retrun.html; #return 403; } } 第一行:gif|jpg|png|swf|flv 表示对gif.jpg.png.swf.flv后缀的文件

  • Nginx对某个目录设置密码保护例子

    有时不想某个目录被访问,所以要加密码之类来保护,以前用过的 Apache 好像很简单就实现目录加密.我用的是 Nginx,用了那么久 Nginx 还真没试过加密--参考了一些资料,然后发现这样就可以:(Debian系统,配置中"#......."表示后续还有其他配置)1. 配置网站(假如 yousite.com 放在 /home/www,然后要对 ooxx 目录加密) 复制代码 代码如下: server { listen 80; server_name yousite.com; roo

  • Nginx 禁止访问某个目录或文件的设置方法

    复制代码 代码如下: location = /config/ { return 404; } location =/config.ini{ return 404; } 这样只能禁止访问 http://www.jb51.net/path/ 复制代码 代码如下: location = /path/ { return 404; } 禁止访问 http://www.jb51.net/path/test.php 复制代码 代码如下: location ^~ /test { deny all; } 可能te

  • iis、apache与nginx禁止目录执行asp、php脚本的实现方法

    一般iis中比较简单,iis6如下图所示即可: 很多购买虚拟主机空间的用户,如果空间商提供了在线管理程序,也可以实现.具体的看下帮助即可. 需要知道目录名称,设置即可. iis7+禁止执行php等 IIS7也类似于IIS6.0,选择站点对应的目录,data.uploads及静态html文件目录,双击功能试图面板中的"处理程序映射"(如图2) 在"编辑功能权限--"中,我们直接去除脚本的执行权限即可.(如图3) apache中一般是通过.htaccess文件来限制 A

  • apache,nginx上传目录无执行权限的设置方法

    我们来看俩段通常对上传目录设置无权限的列子,配置如下: 复制代码 代码如下: <Directory "/var/www/upload"> <FilesMatch ".php"> Order Allow,Deny Deny from all </FilesMatch> </Directory> 还有网上那个对nginx上传目录无执行权限 复制代码 代码如下: location ~ ^/upload/.*\.(php|ph

  • Nginx常用功能详解

    一.NGINX目录保护及访问限制 Nginx保护目录的配置如下,目录密码保护文件是 /usr/local/nginx/htpasswd location ~ /admin { #admin为要保护的目录名称,location 的意思就是保护从网页根目录算起的admin 目录 auth_basic "PLEASE LOGIN"; #就是进入资料夹时会显示的信息 auth_basic_user_file /usr/local/nginx/htpasswd; #验证用户及密码文件,我这边设定

  • Python标准库sys库常用功能详解

    目录 1.查看版本信息 2.四大实现详细信息 3.查看Python解释器的相关信息 3.设置python解释器信息 4.标准输入.输出和错误流 5.查看系统平台相关信息 6.其他 1.查看版本信息 # coding:utf-8 import sys # 获取 Python版本信息 print(sys.version) # 获取解释器中C的API版本 print(sys.api_version) # 获取Windows系统功能版本 print(sys.getwindowsversion()) #

  • ABAP ALV最常规写法及常用功能详解

    目录 先导 流程顺序 开发ALV的基本流程: ALV 界面介绍 ALV 开发注意事项 ALV 基本参数 ALV 对象参数 ALV 参数控制Layout ALV 参数控制Fieldcat ALV定义事件 ALV DEMO 1:声明alv 2:定义内表 3:读取数据 4:字段配置 ALV格式控制. 着重解释 5:定义事件 6:排序(常用功能) 7:显示alv数据 8:按钮操作标题栏等配置 总结 先导 记得刚学ABAP的时候问这问那,问东问西,常常一个可能不怎么用的东西,扣了好久好久.群里的大佬就说,

  • Spring Boot整合Web项目常用功能详解

    前言 在Web应用开发过程中,一般都涵盖一些常用功能的实现,如数据库访问.异常处理.消息队列.缓存服务.OSS服务,以及接口日志配置,接口文档生成等.如果每个项目都来一套,则既费力又难以维护.可以通过Spring Boot的Starter来将这些常用功能进行整合与集中维护,以达到开箱即用的目的. 项目基于Spring Boot 2.1.5.RELEASE 版. 项目地址 整个项目分为如下几部分: spring-boot-autoconfigure: 具体的各功能实现,每个功能通过package的

  • Apache和Nginx的优缺点详解_动力节点Java学院整理

    Apache和Nginx比较 功能对比 Nginx和Apache一样,都是HTTP服务器软件,在功能实现上都采用模块化结构设计,都支持通用的语言接口,如PHP.Perl.Python等,同时还支持正向和反向代理.虚拟主机.URL重写.压缩传输.SSL加密传输等. 在功能实现上,Apache的所有模块都支持动.静态编译,而Nginx模块都是静态编译的, 对FastCGI的支持,Apache对Fcgi的支持不好,而Nginx对Fcgi的支持非常好: 在处理连接方式上,Nginx支持epoll,而Ap

  • Nginx服务器Nginx.com配置文件详解

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; #工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但

  • Linux终端命令行的常用快捷键详解

    history 显示命令历史列表 ↑(Ctrl+p) 显示上一条命令 ↓(Ctrl+n) 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !?string? 执行含有string字符串的最新命令 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 Ctrl+s 与Ctrl+r类似,只是正向检索 Alt+< 历史列表第一项 Alt+> 历史列表最后一项 Ctrl+f 光标向前移动一个字符,相当与-> Ct

  • 基于字符串常用API(详解)

    API(Application Programming Interface):应用程序编程接口 使用Scanner 获取键盘录入的字符串 next() ; 在遇到空格的时候 会判定为当前的输入结束 空格之后的内容会收不到 nextLine(); 可以避免被空格中断 , 但是在于接收数字一起使用的时候会被干扰 创建字符串对象 public String(String original) ---> 通过字符串创建一个字符串对象 public String(char[] value) -=--> 通

  • Maven 配置文件 生命周期 常用命令详解

    当前,JVM生态圈主要的三大构建工具: Apache Ant(带着Ivy) Maven Gradle 对于初学者,Ant是最清晰的,只要读懂Xml配置文件你就能够理解它干了什么,但是ant文件很容易变的更加复杂.Maven有自己的工程目录规则和内置的构建生成周期,从而使构建文件更加简单.gradle有很多开箱即用的插件,语法更加短小精悍,易于理解. 在讲解maven之前这里我们先简单比较下Maven和Ant.下面是一个简单的Ant例子.这个例子可以看出我们需要明确的告诉Ant.我们想让他做什么.

  • pytorch 常用线性函数详解

    Pytorch的线性函数主要封装了Blas和Lapack,其用法和接口都与之类似. 常用的线性函数如下: 函数 功能 trace 对角线元素之和(矩阵的迹) diag 对角线元素 triu/tril 矩阵的上三角/下三角,可指定偏移量 mm/bmm 矩阵乘法,batch的矩阵乘法 t 转置 dot/cross 内积/外积 inverse 求逆矩阵 svd 奇异值分解 注意:矩阵的转置会使存储空间不连续,需调用它的.contiguous方法转为连续. 例如: import torch as t b

随机推荐