rewrite示例-自动跳转https

示例1:自动把首页的http转化成https
location / {
root /data/nginx/pc/html;
index index.html;
if ( $scheme = http ) {
rewrite / https://www.xxxpc.net/;
}
}
当你访问网站首页时,进行判断;当协议是http时,则进行rewrite重写把http://www.xxxpc.net重写成https://www.xxxpc.net;rewrite必须写在判断里面,如果不加判断条件,把http转化成https之后,还会继续循环,继续把https还转换至https;如此循环10次,直到浏览器显示重定向过多,进行报错为止 示例2:当进入登录界面时,自动跳转为https
location /login {
root /data/nginx/pc/html;
index index.html;
if ( $scheme = http ) {
rewrite / https://www.xxxpc.net/login permanent;
}
auth_basic "input password";
auth_basic_user_file /apps/nginx/conf/.htpasswd;
}
必须先把http转换成https之后,才可以出现登录界面,这样输入的用户名和密码才是加密的;判断必须在认证用户名密码之前进行判断重写

rewrite判断文件是否存在

location / {
root /data/nginx/pc/html;
index index.html;
if ( !-f $request_filename ) {
rewrite (.*) http://www.xxxpc.net/index.html;
}
}
当访问网站/下的资源时先做判断,如果访问/下的资源不存在,则自动重写到网站的首页

Nginx防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗链,referer就是之前的那个网站域名,正常的referer信息有以下几种:

none:请求报文首部没有referer首部,比如用户直接在浏览器输入域名访问web网站,就没有referer信息。
blocked:请求报文有referer首部,但无有效值,比如为空。
server_names:referer首部中包含本主机名及即nginx监听的server_name。
arbitrary_string:自定义指定字符串,但可使用*作通配符。
regular expression:被指定的正则表达式模式匹配到的字符串,要使用~开头,例如:~.*\.magedu\.com。 基于访问安全考虑,nginx支持通过ungx_http_referer_module模块检查访问请求的referer信息是否有效实现防盗链功能
location /images {
root /data/nginx/pc;
valid_referers none blocked server_names ~\.google\. *.baidu.com *.biying.com; #当访问/images下的资源时,只有指定的这些才可以访问
if ( $invalid_referer ) { #如果访问资源的网站不是从上面指定的搜索引擎跳转过来的,则拒绝访问,并且返回状态码403
return 403;
}
}
盗链是被人网站的资源不是指定的他本地资源,而是指定的是其他人网站的链接,占用别人的存储和带宽为自己办事;通过referer来判断,referer是指从哪个网站跳转过来的;如果是百度的话,说明他是百度搜索本域名过来,是合法的;如果没有referer信息,说明他是用浏览器输入域名访问的,也是合法的;如果是从一个未知的网站跳转过来的,就说明是盗链资源,可以通过referer信息判断,然后再进行相关的配置操作。
防盗链一般用于/images(存放图片)和/static(存放静态资源)这两个location中。

nginx之rewrite及防盗链的更多相关文章

  1. Nginx的优化与防盗链

    Nginx的优化与防盗链 1.隐藏版本号 2.修改用户与组 3.缓存时间 4.日志切割 5.连接超时 6.更改进程数 7.配置网页压缩 8.配置防盗链 9.fpm参数优化 1.隐藏版本号: 可以使用 ...

  2. nginx的优化和防盗链

    nginx的优化和防盗链 目录 nginx的优化和防盗链 一.nginx的优化 1. 隐藏版本号 (1)隐藏版本号的原因 (2)查看版本号的方法 (3)隐藏方法一:修改配置文件 (4)隐藏方法二:修改 ...

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

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

  4. Nginx服务器的图片防盗链

    全站的防盗链方法 在/usr/local/webserver/nginx/conf//vhost/xxxx.conf文件要添加防盗链的server段里添加下面的代码: location ~ .*\.( ...

  5. Nginx缓存功能、防盗链、URL重写

    nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从本地构造响应报文. nginx的缓存数据结构: 共享内存:存储键和缓存对象元数据 磁盘空间:存 ...

  6. Nginx详解十三:Nginx场景实践篇之防盗链

    防盗链: 目的:防止资源被盗用 防盗链设置思路 首要方式:区别哪些请求是非正常的用户请求 基于http_refer防盗链配置模块(判断refer(上一步的链接)信息是否为允许访问的网站) 配置语法:v ...

  7. nginx跨域、防盗链、压缩等小功能详解

    原文链接:http://www.studyshare.cn/software/details/1173/0 一.跨域 跨域由来,是因为W3C组织制定的浏览器安全规范,不允许一个域名内的网站在没有别的域 ...

  8. Nginx 配置静态资源防盗链

    # 什么是静态资源盗链: # 你服务器上的一张图片,127.0.0.1/images/a.png # 别人的html页面可以直接通过<img src="127.0.0.1/images ...

  9. IIS URL Rewrite Module防盗链规则配置方法

    IIS版本:IIS 7.5 URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrit ...

随机推荐

  1. SAP替代,出口U904在RGGBS000中未生成

    报错.提示出口U904在RGGBS000中未生成. 一般情况下需要到 程序RGGBS000 中,在form:get_exit_titles 中增加下列代码. exits-name = 'U904. e ...

  2. C#实现将字符串转换成代码并执行

    我们在写JavaScript程序的时候,有一个函数很有趣,eval(),这个方法非常有趣,他可以编译他内部的字符串,并将字符串按照JS代码执行,例如eval(‘alert(“message”)’),执 ...

  3. Jmeter的安装与配置。

    1.本机配置好JAVA环境. 2.官网下载压缩包,在任意目录下解压. 3.修改配置文件 ,打开Jmeter的bin目录下jmeter.porperties,修改 language=zh_CN samp ...

  4. Java自学-异常处理 Throwable

    Java Throwable类 步骤 1 : Throwable Throwable是类,Exception和Error都继承了该类 所以在捕捉的时候,也可以使用Throwable进行捕捉 如图: 异 ...

  5. VC 在桌面上绘制一些图形

    注意:这是在桌面上绘制图形.如果想在VC++ MFC工程的视窗口上绘制图形.可以这么来,在工程View类的一个菜单响应(或者鼠标单击等事件的的响应)函数中添加下面main 中的代码,只需要将“红色字体 ...

  6. CSS3实现0.5px边框

    用CSS设置边框宽度为0.5px,可以使边框看起来更加细腻,特别是在移动端,设计师会有这样的要求. 但遗憾的是,大多数Android手机并不能识别0.5px.因此我们可以使用CSS3来变通的实现0.5 ...

  7. Java集合学习(3):HashSet

    一.概述 HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null元素. HashSet是基于Has ...

  8. APP开发基础知识(转载)

    来源:https://www.cnblogs.com/wangsea/p/9413672.html 本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用 ...

  9. MongoDB Spark Connector 实战指南

    Why Spark with MongoDB? 高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的 简单易用,支持 Java.Python.Scala.SQL 等多种 ...

  10. 【前端_js】array.forEach和$.each()及$().each()的用法与区别

    1.$.each():方法是jQuery中的方法,用于遍历数组或对象.用法:$.each(array,function(index,value){...}),有两个参数,第一个为待遍历的数组或对象,第 ...