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中。

最新文章

  1. acm数学(转)
  2. css-让div永远在最底部
  3. 9x25 串口映射
  4. python错误集锦
  5. 基数排序/Go实现
  6. Codeforces Round #340 (Div. 2) B. Chocolate 水题
  7. 各种浏览器的agent信息(IE Chrome Safari Firefox)
  8. Python之路第五天,基础(6)-模块
  9. BZOJ 2330: [SCOI2011]糖果( 差分约束 )
  10. 大数据基础知识问答----spark篇,大数据生态圈
  11. Postman----支持markdown可自动生成接口文档
  12. 20175303 Mycp实现Linux下cp xxx1 xxx2的功能
  13. 'scope' is defined but never used
  14. 图片上传js
  15. HDU ACM 1869 六度分离(Floyd)
  16. Python 学习 第九篇:模块
  17. Luogu 1603 - 斯诺登的密码 - [简单字符串操作]
  18. 知乎如何基于开源Druid打造下一代数据平台?
  19. Python - 1. Built-in Atomic Data Types
  20. 【xsy1281】 珠串 打表+乱搞or数位dp

热门文章

  1. SQL怎么实现SLEEP功能(等待时间) -(转载)
  2. winform datagridview控件使用
  3. 2019 中钢网java面试笔试题 (含面试题解析)
  4. python基础知识(一)
  5. vue生成pdf
  6. 你可能还不知道的关于JavaScript类型的细节?
  7. AngularJS 菜鸟
  8. xenserver增加新硬盘
  9. centos7快速安装coreDns
  10. linux-Windows文件上传Linux