g87616758 发表于 2018-11-12 12:51:16

LNMP(2)Nginx默认虚拟主机、Nginx用户认证、Nginx域名重定向、Nginx访问日志、

  Nginx默认虚拟主机
  Nginx和httpd都有虚拟主机,在httpd中第一个被加载的就是默认虚拟主机;但是在Nginx中它有一个配置用来标记默认虚拟主机(default_server),如果不做标记,那么第一个也是默认为虚拟主机。
  
  
  默认虚拟主机设置:
  1.需改配置文件/usr/local/nginx/conf/nginx.conf
  cd /usr/local/nginx/conf/
  vim nginx.conf
  
  删除内容后,加上一行(在httpd{}里加)include vhost/*.conf;
  (include 其就是引入文件的命令一样。这里是引入当前目录(/conf/)的 vhost/*.conf这类文件)
  
  在/usr/local/nginx/conf下创建vhost目录
  mkdir vhost
  cd vhost
  vim aaa.com.conf (编辑这个新文件,增加内容)
  
  server
  {
  listen 80 default_server;// 有这个标记的就是默认虚拟主机
  server_name aaa.com;
  index index.html index.htm index.php; //定义索引
  root /data/wwwroot/default;//指定我们访问网站路径
  }

  创建 default目录(因为我们/data/wwwroot/已经创建)
  (mkdir -p /data/wwwroot/default)
  mkdir /data/wwwroot/default
  cd /data/wwwroot/default
  vim index.html(在default目录定义index.html索引页)
  
  (此时如果配置文件无误,这可以正常的include /usr/local/nginx/conf/vhost/aaa.com.conf 这个虚拟主机))
  修改完后检查一下nginx配置文件是否有错
  (1)检查配置文件有没有错
  /usr/local/nginx/sbin/nginx -t
  (2)重新加载一下配置文件 (-s>
  /usr/local/nginx/sbin/nginx -s>
  (这两条命令类似apache中的 -t 和 grantful)
  
  
  
  Nginx用户认证
  
  用户认证这部分内容写在虚拟主机里:
  
  步骤:
  1.新增一个test.com.com虚拟主机:
  cd /usr/local/nginx/conf/
  vim test.com.conf   (添加内容)
  server
  {
  listen 80;
  server_name test.com;
  index index.html index.htm index.php;
  root /data/wwwroot/test.com;
  location/
  {
  auth_basic            "Auth";
  auth_basic_user_file   /usr/local/nginx/conf/htpasswd;//密码文件路径
  }
  }
  
  
  生成密码文件与(使用htpasswd工具)
  yum install -y httpd
  htpasswd -c /usr/local/nginx/conf/htpasswd cansheng
  
  
  
  测试:
  创建test.com这个虚拟主机的访问路径文件:
  
  
  curl -ucansheng:123456 -x127.0.0.1:80 test.com
  
  (这里是对整个主机都用户认证的)
  
  针对一个目录做用户认证
  只需要在虚拟主机配置文件中 location 那行 把要用户认证的目录添加上就行
  
  
  每次修改完后检查一下nginx配置文件是否有错
  (1)检查配置文件有没有错
  /usr/local/nginx/sbin/nginx -t
  (2)重新加载一下配置文件 (-s>
  /usr/local/nginx/sbin/nginx -s>
  测试:
  创建目录:mkdir /data/wwwroot/test.com/admin
  写入内容:echo "test test.com/admin dir" > /data/wwwroot/test.com/admin/index.html
  
  
  
  针对一个访问的url做用户认证:
  修改配置文件:vim /usr/local/nginx/conf/vhost/test.com.conf
  
  测试:不加用户名密码也是报401:
  
  
  
  Nginx域名重定向
  
  
  1.编辑配置文件:
  vim /usr/local/nginx/conf/vhost/test.com.conf
  
  
  每次修改完后检查一下nginx配置文件是否有错
  (1)检查配置文件有没有错
  /usr/local/nginx/sbin/nginx -t
  (2)重新加载一下配置文件 (-s>
  /usr/local/nginx/sbin/nginx -s>

  测试:
  
  
  (如果我的虚拟主机中没有定义到该域名,则会跳转到默认虚拟主机)
  
  Nginx访问日志
  
  1.打开住配置文件:vim /usr/local/nginx/conf/nginx.conf
  搜索 log_format
  
  
  
  
  

  2.编辑虚拟主机test.com配置文件:
  vim /usr/local/nginx/conf/nginx.conf/test.com.conf
  
  
  每次修改完后检查一下nginx配置文件是否有错
  (1)检查配置文件有没有错
  /usr/local/nginx/sbin/nginx -t
  (2)重新加载一下配置文件 (-s>
  /usr/local/nginx/sbin/nginx -s>
  
  测试:
  
  查看一下日志文件内容:
  
  
  
  Nginx日志切割
  nginx 日志简单,不像httpd还有自带切割工具。切割Nginx日志需借助系统的切割工具或者自定义脚本。
  自定义脚本做切割:
  1.创建一个脚本文件:
  vim /usr/local/sbin/nginx_logrotate.sh
  添加内容
  
  #! /bin/bash
  ## 假设nginx的日志存放路径为/data/logs/
  d=`date -d "-1 day" +%Y%m%d`   //表示昨天的日期,做切割一般都是对昨天的日志操作
  logdir="/tmp/"//日志存放目录为/tmp/(因为之前定义在/tmp/)
  nginx_pid="/usr/local/nginx/logs/nginx.pid"    //有pid才能执行最后kill那个命令
  cd $logdir
  for log in `ls *.log`
  do
  mv $log $log-$d
  done
  /bin/kill -HUP `cat $nginx_pid` //相当于前面的命令执行完,日志改完名字后生成源来的日志文件名/tmp/test.com.log

  执行以下脚本
  sh -x /usr/local/sbin/nginx_logrotate.sh (-x 可以看到执行过程)
  
  查看日志目录生产的文件:
  ls /tmp/
  
  (当我们的日志文件够多时要即使处理,删除,减少对磁盘的占用
  命令:find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm
  (查找到*.log-*的这些文件,把30天前的删除, xargs rm)
  )
  
  写完脚本后:如果想在我们设定的时间里定时执行,需要写个任务计划:
  命令:crontab -e
  
  这样我们编写的脚本 /usr/local/sbin/nginx_logrotate.sh就会在每天凌晨执行。
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

页: [1]
查看完整版本: LNMP(2)Nginx默认虚拟主机、Nginx用户认证、Nginx域名重定向、Nginx访问日志、