综合架构之网站服务-nginx

1.logrotate程序进行日志切割原理说明

  1. nginx服务扩展配置文件 server区块
  2. nginx服务如何搭建网站
  3. nginx服务多个虚拟主机 多个server配置信息
  4. nginx服务三种访问方式 基于域名 基于端口(访问原理) 基于地址(监听地址)
  5. nginx服务实现共享存储 autoindex --- 显示站点目录结构
  6. nginx服务安全访问控制 基于访问源地址(deny/allow) 基于认证访问(ngx_http_auth_basic_module)

logrotate程序进行日志切割原理

cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly #默认按周进行切割日志

# keep 4 weeks worth of backlogs
rotate 4 #保留最新4周的数据

# create new (empty) log files after rotating old ones
create #切割日志之后创建新的日志文件

# use date as a suffix of the rotated file
dateext #生成的日志带时间信息。

# uncomment this if you want your log files compressed
#compress #切割的日志是否压缩

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d #调用一个目录下的日志文件

# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp { #具体得哪个文件进行切割(局部配置)
    monthly
    create 0664 root utmp 切割完日志的权限
    minsize 1M        最小尺寸,如果不超过1M就不进行切割
    rotate 1              保存一份
}

/var/log/btmp {
    missingok
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.

加载目录下的日志文件

[root@web01 logrotate.d]# ll 
total 20
-rw-r--r--. 1 root root  91 Apr 11  2018 bootlog
-rw-r--r--  1 root root 351 Apr 23 22:34 nginx
-rw-r--r--. 1 root root 224 Oct 30  2018 syslog
-rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Nov  5  2018 yum

[root@web01 logrotate.d]# cat syslog 
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok    #固定格式
    sharedscripts #固定格式
    postrotate #固定格式
    /bin/kill -HUP `cat /var/run/syslogd.pid 2#系统日志服务> /dev/null` 2#没有这个进程追加到空> /dev/null || true
    endscript #把日志做了切割日志,原有的日志还在调用,没有生效,所以重启新生成的日志才会被调用。

nginx服务扩展配置文件

mv /etc/nginx/conf.d/default.conf   /etc/nginx/conf.d/default.conf.bak #避免主配置文件加载默认配置文件,影响www配置文件。
/etc/nginx/conf.d/default.conf
egrep -v "#|^$" default.conf >www.conf #将#号空格重新追加到一个新的配置文件当中。
server {                               --- 可以配置网站信息  每个网站==server==每个虚拟主机
        listen       80;                   --- 网站服务监听端口
        server_name  www.oldboy.com;       --- 定义网站主机域名
        location / {  ???
            root   /html/www;              --- 指定站点目录(存放网站所有资源)
            index  oldboy.jpg index.htm;   --- 首页文件#注:访问www.oldboy的时候会默认访问第一个配置的首页文件,如果第一个丢失或删除会继续向下匹配。匹配的首页文件都删除或丢失的时候会报403的错误,首页文件不存在。
        }
        error_page   404 500 502 503 504  /oldboy.jpg;   --- 错误页面优雅显示#也可以配置百度的优雅界面,后面的都不要
        location = /oldboy,jpg { 匹配URI的信息
            root   /usr/share/nginx/html; #去哪找URI的信息
        }
    }

注:更新站点下的目录内容可直接加载。


在站点目录存放index.html就可以访问页面内容


启动nginx出现报错

[root@web01 conf.d]# systemctl restart nginx 
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

检查语法是否正确

[root@web01 conf.d]# nginx -t www.conf 
nginx: invalid option: "www.conf"

nginx配置文件规范:
01. 区域模块信息 必须有一对花括号
02. 指令信息后面必须有分号
03. 相应指令信息必须放置在正确区块中

nginx服务配置多个虚拟主机

  1. 多个虚拟主机配置
    第一个历程: 编写多个虚拟主机配置文件
    /etc/nginx/conf.d/
    [root@web01 conf.d]# cat *.conf
    server {
        listen       80;
        server_name  bbs.oldboy.com;
        location / {
            root   /html/bbs;
            index  index.html index.htm;
        }
        error_page  404 500 502 503 504  https://www.baidu.com/search/error.html;
    }
    server {
        listen       80;
        server_name  blog.oldboy.com;
        location / {
            root   /html/blog;
            index  index.html index.htm;
        }
        error_page  404 500 502 503 504  https://www.baidu.com/search/error.html;
    }
    server {
        listen       80;
        server_name  www.oldboy.com;
        location / {
            root   /html/www;
            index  index.html index.htm;
        }
        error_page  404 500 502 503 504  https://www.baidu.com/search/error.html;
    }

第二个历程: 创建站点目录和首页文件

    [root@web01 conf.d]# for name in {www,bbs,blog};do echo $name.oldboy.com >/html/$name/index.html;done
    [root@web01 conf.d]# for name in {www,bbs,blog};do cat /html/$name/index.html;done
    www.oldboy.com
    bbs.oldboy.com
    blog.oldboy.com

第三个历程: 重启nginx服务

    nginx配置文件规范:
    01. 区域模块信息 必须有一对花括号
    02. 指令信息后面必须有分号
    03. 相应指令信息必须放置在正确区块中
   
    nginx -t    --- 检查配置文件语法命令
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    systemctl restart/reload nginx

第四个历程: 进行网站页面访问测试
配置DNS解析信息

10.0.0.7 www.oldboy.com bbs.oldboy.com blog.oldboy.com

网站服务访问方式

  • a 基于域名信息访问
  • b 基于端口信息访问
    修改server虚拟主机配置文件
server {
          listen       8080;#修改了端口
          server_name  www.oldboy.com;
          location / {
              root   /html/www;
              index  index.html index.htm;
          }
          error_page  404 500 502 503 504  https://www.baidu.com/search/error.html;
      }

访问方式
www.oldboy.com:8080

如果输入www.oldboy.com则访问的是bbs.oldboy.com信息的内容

原理

用户访问网站的原理

传输层封装的时候不加8080的端口号会封装80端口去站点寻找首页文件的时候会根据字母排序的html进行访问。

  • c 基于地址信息访问
    准备工作: 主配置文件
    include /etc/nginx/conf.d/www.conf;
       listen       10.0.0.7:80;
        server_name  www.oldboy.com;
        location / {
            root   /html/www;
            index  index.html index.htm;
        }
       PS: nginx配置文件中只要涉及到IP地址修改,必须重启nginx服务,不能平滑重启。

利用nginx服务实现FTP存储服务器

第一个历程: 编写配置文件  www.conf 
    server {
         listen            80;
         server_name  www.oldboy.com;
         location / {
             root   /html/www;
             index  index.html index.htm;
             autoindex  on;    --- 开启网站站点目录信息显示功能
             charset utf-8;    --- 设置中文字符集信息,避免页面中文出现乱码
         }
         error_page  404 500 502 503 504  https://www.baidu.com/search/error.html;
     }
    
    systemctl restart nginx
    第二个历程: 创建站点目录, 将指定的首页文件删除
    rm index.html -f
    第三个历程: 修改媒体资源类型文件
    sed -r '/jpg\;$|gif\;$|txt\;$/s@(.*)@#\1@g' /etc/nginx/mime.types
    systemctl restart nginx

mine.type识别的文件类型注释或删除就可以下载了。

对网站页面信息进行访问控制

allow/deny: 
location: location /VIP专区/ 

server {
    listen            80;
    server_name  www.oldboy.com;
    location / {
        root   /html/www;
        index  index.html index.htm;
        autoindex  on;
        charset utf-8;
    }
    location /VIP专区/ {     #--- 匹配uri操作,禁止访问URI信息
        root   /html/www;
        deny   10.0.0.1;     --- 进行访问控制
        allow  all;
    }
    error_page 403 404 500 502 503 504  /error.html;
    location = /error.html {
        root /html/www;
    }
}

根据用户登录密码进行控制

auth_basic --- 开启登录认证功能
auth_basic_user_file --- 指定加载的密码文件
http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

第一个历程: 修改配置文件

   root@web01 VIP专区]# cat /etc/nginx/conf.d/www.conf 
    server {
        listen            80;
        server_name  www.oldboy.com;
        location / {
            root   /html/www;
            index  index.html index.htm;
            autoindex  on;
            charset utf-8;
        }
        location /VIP专区/ { 
            root   /html/www;
            autoindex on;
            charset utf-8;
            auth_basic  oldboy62;
            auth_basic_user_file  /etc/password.txt; #可以相对路径也可以使用绝对路径
        }
        error_page 403 404 500 502 503 504  /error.html;
        location = /error.html {   #每个location是局部配置
            root /html/www;
        }
    }

第二个历程: 生成密码文件

    yum install -y httpd-tools
    htpasswd -bc /etc/password.txt oldgirl oldboy123   #---第一次创建
    htpasswd -b  /etc/password.txt oldboy oldboy123    #---添加新的用户
    -b  免交互输入密码
    -c  创建密码文件,但是是交互的形式

你可能感兴趣的:(综合架构之网站服务-nginx)