保障4-0516任务打卡

任务列表:
12.7 默认虚拟主机
12.8 Nginx用户认证
12.9 Nginx域名重定向
12.10 Nginx访问日志
12.11 Nginx日志切割
12.12 静态文件不记录日志和过期时间
12.13 Nginx防盗链
12.14 Nginx访问控制
12.15 Nginx解析php相关配置
12.16 Nginx代理

12.7 默认虚拟主机

1,更改主配置文件,添加虚拟主机配置文件路径

  • vim /usr/local/nginx/conf/nginx.conf
  • 删除server下的内容
  • 在http的最后添加include vhost/*.conf;
    11-29.png
  • 这里的vhost目录是指在/usr/local/nginx/conf目录下的vhost目录。

2,在指定的目录里生成主机配置文件

  • vim /usr/local/nginx/conf/vhost/aaa.com.conf
  • 添加以下内容
server
{
    listen 80 default_server;  
    server_name aaa.com;
    index index.html index.htm index.php;
    root /data/wwwroot/default;
}

  • listen 指监听端口
  • default_server// 有这个标记的就是默认虚拟主机
  • server_name 指虚拟主机名称。
  • index 指默认页面
  • root 网页内容存放路径。默认页面就放在这个目录的根下。

3,生成网站目录

mkdir -p /data/wwwroot/default/
  • 目录名称自定,但要和配置文件一致。

4,制作测试默认页面

 echo “This is a default site.”>/data/wwwroot/default/index.html
  • 内容自订,注意现在没有php配置,所以只能制作html页面。

5,重新载入配置

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
  • 测试过程是必须的,防止意外出现。
  • 使用-s reload而不使用restart是为了只重载配置,而不影响在线的用户。

6,测试

  • web测试输入虚拟主机名称,输出This is a default site.即为成功。
  • curl -x 127.0.0.1:80 aaa.com输出This is a default site.即为成功

默认虚拟主机

  • 带有default_server标记的为默认
  • 没有default_server,在/vhost目录下排第一的为默认。
  • 多个default_server标记,排前的为默认。

12.8 Nginx用户认证

1,核心配置

location  /
    {
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
    }

  • 要写在server下
    11-30.png
  • auth_basic认证方式。“Auth”为密码认证
  • auth_basic_user_file 认证文件路径

2,生成认证文件。

  • 生成认证文件需要/usr/local/apache2.4/bin/htpasswd工具。
  • 如果没有安装apache。可以使用yum install -y httpd装一个。
  • 生成认证文件
/usr/local/apache2.4/bin/htpasswd -c /usr/local/nginx/conf/htpasswd username
New password: 
Re-type new password: 
Adding password for user username
  • 输入两次密码确认后生成指定的文件
  • 第一次成生文件需要-c第二次开始就不需要了。如果还加-c,就会重置这个文件。

3,测试配置并重新加载

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

4,测试

  • web测试,打开网页时提示输入帐号密码即为成功。
  • curl -x 127.0.0.1:80 aaa.com -I,返回401,说明需要用户认证。
  • curl -x 127.0.0.1:80 -uxy:47721852 aaa.com -I,输入用户名密码返回200,说明正常。

5,认证方式也可以针对网页根下的目录:

  • 比如针对/data/wwwroot/sapwin.com/admin目录


location  /admin/
    {
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
}
  • 使用curl测试时,针对目录结尾一定要带上/以表示这是一个目录。

6,匹配文件url

location ~ admin.php 
    {
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
}
  • 使用~匹配url

12.9 Nginx域名重定向

1,核心配置

if ($host != 'aaa.com' ) {
        rewrite  ^/(.*)$  http://aaa.com/$1  permanent;
    }
  • if ( h o s t ! = ′ t e s t . c o m ′ ) 表 示 如 果 host != 'test.com' )表示如果 host!=test.com)host也就是除了aaa.com的所有域名。这是条件
  • rewrite ^/(.*)$ http://aaa.com/$1 permanent;全部把自已的域名开头全改写成http://aaa.com/
  • ^/(.*)$的完整表达示为:http://hostname/(.*)$
  • 一个网站可以有很多域名。跳转的主要目的就是提高自己的权重方便搜索引擎收录。
  • permanent为永久跳转301,如果想让返回码为302,这里可以写成redirect

2,测试配置并重新加载

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

3,测试

  • curl -x 127.0.0.1:80 aaa.com -I,返回301,说明成功。

12.10 Nginx访问日志

1,日志格式

vi /usr/local/nginx/conf/nginx.conf

11-31.png

  • log_format这一行定义了日志的格式
  • combined_realip 是日志的名称可以自定义
字段含义
$remote_addr客户端IP(公网IP)
$http_x_forwarded_for代理服务器的IP
$time_local服务器本地时间
$host访问主机名(域名)
$request_uri访问的url地址
$status状态码
$http_refererreferer
$http_user_agentuser_agent

2,定义日志存放的路径

  • access_log 可以定义访问日志的存放路径,并且可以直接通过nginx.conf中日志名称来调用日志的格式。

12.11 Nginx日志切割

1,自定义日志切割脚本

vim /usr/local/nginx/sbin/nginx_logrotate.sh

2,编辑脚本内容

#! /bin/bash
## 假设nginx的日志存放路径为/data/logs/
d=`date -d "-1 day" +%Y%m%d` 
logdir="/data/logs"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`
find /data/logs -name *log-* type -f -mtine +7 |xargx mv
  • data -d “-1 day” +%Y%m%d表示昨天,输出格试为年月日。
  • 因为日志切割是要在今天的十二点,把昨天的日志归档。所以切割文件的名称是以昨天的日期来命名的。
  • 定义nginx_pid函数的作用是在后边使用/bin/kill -HUP `cat $nginx_pid`来重新开始记录日志。
  • 切割的实现:在今天的零点零分,把当前日志改名为log-昨天的日期,然后让日志重新开始记录。
  • for log in `ls *.log`的意思是把以.log结尾的文件赋值给变量log
  • 循环的结果就是所有以.log结尾的文件都带上昨天的日期。
  • /bin/kill -HUP `cat $nginx_pid`执行后会生成新的log文件。
  • 最后一行是删除七天以上的带有log-的文件。

3,通过任务计划执行脚本

crontab -e
0 0 * * * /bin/bash /usr/local/nginx/sbin/nginx_logrotate.sh

12.12日志文件不记录静态文件以及静态文件的过期时间

  • 核心配置
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
          expires      7d;
          access_log off;
    }
location ~ .*\.(js|css)$
    {
          expires      12h;
          access_log off;
    }
  • expires 就是指过期时间。
  • access_log off就是指不记录访问日志
  • location ~ 后边匹配使用的是正则表达式。

12.13 Nginx防盗链

  • 核心配置
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
    expires 7d;
    valid_referers none blocked server_names  *.test.com ;
    if ($invalid_referer) {
        return 403;
    }
    access_log off;
}

  • location ~* 表示匹配时不区分大小写
  • valid_referers none blocked server_name是用来定义白名单的
  • if ($invalid_referer)表示除了白名单以外的内容

12.14 Nginx访问控制

1,对目录限制

location /admin/
{
    allow 192.168.133.1;
    allow 127.0.0.1;
    deny all;
}
  • nginx在对ip限制这里是从上至下的。匹配到相符合的就不继续向下了。

2,对文件进行限制

location ~ .*(abc|image)/.*\.php$
{
        deny all;
}
  • 这里对目录和文件做了复合限制。网站下任何以abc和image结尾的目录的其下以.php结尾的文件都禁止防问。

3,限制user_agent

if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
      return 403;
}
  • deny all和return 403效果一样
  • 禁了Spider就会让蜘蛛不能爬到自己的网站上。

12.15 Nginx解析php相关配置

核心配置

location ~ \.php$
    {
        include fastcgi_params;
        fastcgi_pass unix:/tmp/php-fcgi.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;
    }
  • fastcgi_pass 指定php-fpm监听端口或文件。如果这里错了,就会出现502
  • 出现502状态码的另一种可能,php.ini里定义的sock文件权限不够。
  • fastcgi_param SCRIPT_FILENAME一定要指定网页根目录,否则404

12.16 Nginx代理

1,代理服务使用场景

  • 不能直接访问服务器,服务器在一个私网内,但是可以通过代理服务器来访问。
  • 直接访问速度太慢,可以通过代理服务器加速。

2,核心配置

  • 生成一个代理虚拟服务器配置vim /usr/local/nginx/conf/vhost/proxy.conf
server
{
    listen 80;
    server_name ask.apelearn.com;

    location /
    {
        proxy_pass      http://121.201.9.155/;
        proxy_set_header Host   $host;
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

直播笔记

web代理软件排行

https://w3techs.com/technologies/overview/web_server/all

nginx高效的原因

https://github.com/aminglinux/nginx/blob/master/4z/IO.md

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值