nginx-虚拟主机,访问控制,防盗链,代理服务

客户端192.168.0.100客户端访问

http://www.tarena.com /usr/local/nginx/html/onedir/
http://bbs.tarena.com /bbsdir

192.168.0.254
/usr/local/nginx/html/onedir/index.html (123)

配置
1 虚拟主机 (基于域名 基于端口号 基于ip地址)

配置基于域名的虚拟主机(通过主机名区分客户端的访问)
192.168.0.254
cat /etc/hosts
192.168.0.254 www.tarena.com www
192.168.0.254 bbs.tarena.com bbs

http://www.tarena.com /wwwdir index.html (www-page)
http://bbs.tarena.com /bbsdir index.html (bbs-page)
http://mail.tarena.com /maildir index.html (mail-page)

vim nginx.conf
…..
…..

http {
      server  {
            listen   80;
            server_name  www.tarena.com;
            location  /  {
                   root    /wwwdir ;
                   index  index.html ;
            }
      }
     server  {
           listen   80;
           server_name  bbs.tarena.com;
            location   /   {
                      root  /bbsdir;
                      index  index.html;
            }
    }
}

基于端口的虚拟主机(通过端口区分客户端的访问)
80
http://www.tarena.com /wwwdir index.html ( web)
http://www.tarena.com:8000 /bbsdir index.html (bbs)

(http://bbs.tarena.com:8090 /managerdir index.html (manager)

http {
server   {
              listen  8090;
              server_name  bbs.tarena.com;
              location   /  {
                      root  /managerdir;
                      index index.html;
              }
      }
    server   {
           listen   8000;
           #server_name   www.tarena.com;#只要dns能够解析就可以,主机名可以不写
           location   /   {
                    root   /bbsdir;
                    index  index.html;         
            }
   }
   server   {
         listen   80;
         #server_name  www.tarena.com;
         location   /   {
               root  /wwwdir;
               index  index.html;
        }
   }
}

基于Ip地址的虚拟主机 (通过客户端访问的ip地址区分访问)
http://192.168.0.254 (eth0) /wwwdir index.html www
http://192.168.0.253 (eth1) /bbsdir index.html bbs
[http://192.168.0.253:8080 (eth1) /manager index.html manager]

     server  {
          listen   192.168.0.254:80; 
          location  /  {
                   root     /wwwdir;
                   index   index.html;
         }  
     }
     server  {
         listen   192.168.0.253:80;
         location  /  {
                  root  /bbsdir;
                  index  index.html; 
         }
     }
}

基于域名的虚拟主机:发布给公网用户访问的
基于端口/ip地址的虚拟主机 : 把网址的管理页面发布给局域网用户。

练习:
网址服务器ip地址是 :192.168.0.254
客户端访问的地址 网页目录 首页文件名 首页内容
http://www.tarena.com /usr/local/nginx/html/ index.html wwwpage
http://bbs.tarena.com:8000 /bbsdir a.html bbspage

网址服务器限制客户端对自己网页目录的访问 ,location / { …… },默认全局允许,访问控制:
在location中添加:

allow  192.168.0.100;#允许该IP
deny  all;  #默认拒绝所有客户端访问
deny    192.168.0.100;#只禁止该ip
allow  all; #默认允许所有客户端访问

用户验证 (客户端访问网页文件时,必须输入正确的用户名和密码才可以访问)

location{
...
auth_basic    "auth-domain";  # 认证域的名称,其实是提示信息
auth_basic_user_file    /usr/local/nginx/conf/authuser.txt; # 指定保存用户名和密码的文件
...
}

加强安全:只允许从地址 192.168.0.100访问 bbs.tarena.com 的 /bbsdir目录下的网页文件 ,同时访问时要输入用户(是webdamin) 密码(admin88) 才可以访问

rpm  -q  httpd-tools#创建user.txt的软件支持
htpasswd -c /usr/local/nginx/user.txt   webadmin#-h查看帮助,用户名为webadmin,回车后提示输入两次密码。再次添加用户时,不用加-c,-c是创建文件的意思

server {
        listen       8000;
        server_name  bbs.tarena.com;
        location / {
            root   /bbsdir;
            index  a.html index.htm;
            allow  192.168.0.100;
            deny all;
            auth_basic "please user and  password";#需要图形化界面支持
            auth_basic_user_file  "/usr/local/nginx/user.txt";#当前浏览器关闭之前,密码登陆一直有效

        }
}

4 防 “盗链”

盗链 : 盗取其他网站的资源,为自己谋利,盗取访问量,访问量属于首次访问网页,不属于资源网站

盗链网站:
web-server 192.168.0.20 ( 盗链254的图片)
service httpd restart

<html>
       <body>
           <a href="http://www.tarena.com/one.png" > show 20 image </a>
       </body>
</html>

编辑域名解析:
/etc/hosts
192.168.0.20 www.baidu.com www
192.168.0.254 www.tarena.com www

254的nginx网站服务器上防盗链配置:

server    {#语法与shell编程相似,有严格的空格约束,不能少写空格
    ......
    ......
      location  ~* 空格\.(gif|jpg|png|swf|flv|mp3|mp4)$空格{
         valid_referers   none   blocked   www.tarena.com    .tarena.com;#~*后面有空格
#none      本地访问file:///usr/local/nginx/html/one.png
#blocked    经防火墙转换后的地址
#主机名       www.tarena.com      网站服务器的主机名
#区域名       .tarena.com         公司网站所在的区域
         if  (空格$invalid_referer空格) {#$invalid_referer是内置参数,不在valid_refers变量中的
            rewrite  ^/     http://www.tarena.com/error.html;#^/表示源地址,重定向到error.html页面
            #return 404#也可以返回错误码
         }
     }
    ......
    ......
}

编辑错误跳转页面:
echo “get out” > /usr/local/nginx/html/error.html
实验中注意浏览器缓存的问题!!要既是清理终端缓存,确保看到正确的效果。

5 使用Nginx做代理服务
client 1.1.1.1 http://1.1.1.254

1.1.1.254 eth1
nginx
0.254 eth0

web_20 web_100

配置文件vim nginx.conf

http {
     upstream   "apachegrp"   {   #定义服务器组,可以写多个,可以不调用
           server  192.168.0.20:80; #必须写端口号,没有缺省端口
           server  192.168.0.100:80;#默认轮询均衡负载
     }
     server  {
              listen  80;
              location  /   {
                  proxy_pass    http://apachegrp;#调用服务器组,一次只能调用一个服务器组
              }
     }
}

服务器组设置分发策略:
轮询 (默认) 平均分发用户的连接请求
weight 权重值 默认权重值 是1

 upstream  "webgrp" {
        server  192.168.0.20:80 weight=3;
        server  192.168.0.100:80 weight=2;
    }

ip_hash 根据客户端的来源地址 做hash运算 ,根据运算结果分发用户的连接请求。这样可以让每个访客固定访问一个后端服务器 可以解决session的问题.

upstream  "webgrp" {
         ip_hash;
        server  192.168.0.20:80 ;
        server  192.168.0.100:80 ;
    }

Fair 按后端服务器的响应时间来分配请求 响应时间短的优先分配
默认不支持,需要在安装的时候配置./confgiure;

upstream  "webgrp" {
        fair;
        server  192.168.0.20:80 ;
        server  192.168.0.100:80   max_fails=3   fail_timeout=30s;
    }

设置服务组中服务器的状态:
down: 表示当前server暂时不参与负载,对该服务器进行维护时使用。
backup:当其他所有的非backup机器down或者忙的时候,请求会发给backup机器,所以这台机器压力会最轻,也就是备用机。

upstream  "webgrp" {
        server  192.168.0.20:80 backup;#备用机
        server  192.168.0.100:80 down;#该机维护中,不参与负载均衡
    }

max_fails:允许请求失败的次数(默认为1),当超过此次数时,返回proxy_next_upstream模块定义的错误
fail_timeout :max_fails次失败后,暂停提供服务的时间

upstream  "webgrp" {
        fair;
        server  192.168.0.20:80 ;
        server  192.168.0.100:80   max_fails=3 fail_timeout=30s;#相应请求失败3次,则暂停分发给该服务器服务30秒
    }

动静页面分离:
网页文件
动态页面 .php .jsp .net 192.168.0.100 php
安装并启动php:

rpm -qa | grep php
yum -y install php*
service httpd restart

编辑动态页面代码:
vim /var/www/html/a.php

<?php
           echo "hello php";
        ?>

查看php网页:
elinks –dump http://localhost/a.php

静态页面 .css .xml .html 192.168.0.20 html *
client 1.1.1.1
http://1.1.1.254
http://1.1.1.254/a.html
http://1.1.1.254/a.php

vim nginx.conf

http {
      upstream  "webhtml"  {
            server  192.168.0.20:80;
             server  192.168.0.200:80;   
      }
      upstream  "webphp"  {
             server  192.168.0.10:80;
             server  192.168.0.100:80;   
      }

      server    {
            listen  80;      
            location  /  {
                  proxy_pass  http://192.168.0.20:80;
                  #proxy_pass  http://webhtml;
             }
           location  ~  \.php$   {
                  proxy_pass  http://192.168.0.100:80;
                  #proxy_pass  http://webphp;
           }
     }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值