Nginx服务介绍

01、yum安装
    a 使用官方yum源进行安装        安装的是最新版本    软件目录结构比较标准(推荐)
    b 使用非官方yum源进行安装    安装的不是最新版本    目录结构会发生变化
    
02、编译安装
    一、
    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    PS: 解决软件的依赖    openssl-devel pcre-devel
    二、
    解压下载好的软件,并进到目录中
    三、
    编译安装三部曲
    a 进行配置操作
    ./configure
    --prefix=PATH                set installation prefix    
                                指定程序安装路径    
    --user=USER                 set non-privileged user for worker processes
                                设置一个虚拟用户管理worker进程(安全)
    --group=GROUP               set non-privileged group for worker processes
                                设置一个虚拟用户组管理worker进程(安全)
    b 进行软件的编译过程:
    make 编译
    
    c 编译安装过程
    make install
    
03、yum官方安装方法
    一、
    vim /etc/yum.repos.d/nginx.repos
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
    二、yum安装nginx
    yum -y install nginx
    
    三、启动nginx服务,检查服务是否安装正确
    systemctl start nginx
    systemctl enable nginx
    
04、查看软件的目录结构
    1)/etc/logrotate.d/
        实现nginx日志文件定时切割处理
        日志切割方法一:利用脚本实现切割
        #!/bin/bash
        mv /var/log/nginx/access.log /var/log/nginx/access_$(date +%F).log
        systemctl restart nginx
        日志切割方法二:利用专用的文件切割程序--logrotate
        # rotate log files weekly
        weekly                        -- 定义默认日志切割的周期
        
        # keep 4 weeks worth of backlogs
        rotate 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    -- 加载包含/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,小于1M不进行切割
            rotate 1
        }
        
        /var/log/btmp {
            missingok
            monthly
            create 0600 root utmp
            rotate 1
        }
        
        重要文件:
        01:/etc/nginx            配置文件
        02: /var/log/nginx        日志文件
        03:/usr/bin/nginx        命令文件
        04:/usr/share/nginx/html    站点目录
            图片 附件信息 音频 视频
            
05、nginx服务配置文件
    /etc/nginx/nginx.conf        --主配置文件
    第一个部分:配置文件珠区域配置
    user  nginx;                --定义worker进程管理的用户
    补充:nginx的进程
    master process:    主进程        --管理服务是否能够正常运行    boss
    worker process:    工作进程    --处理用户的访问请求        员工
    worker_processes  1;        --定义有几个worker进程 == CPU核数
    error_log  /var/log/nginx/error.log warn;    --定义错误日志路径信息
    pid        /var/run/nginx.pid;                --定义pid文件路径信息
    
    第二个部分:配置文件事件区域
    events {
        worker_connections  1024;    --一个worker进程可以同时接受1024个访问请求
    }
    
    第三个部分:配置http区域
    http {
        include       /etc/nginx/mime.types;    --加载一个配置文件
        default_type  application/octet-stream;    --指定默认识别文件类型
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
                        -- 定义日志的格式
        access_log  /var/log/nginx/access.log  main;
                        -- 指定日志路径
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  65;    --超时时间
        #gzip  on;
        include /etc/nginx/conf.d/*.conf;    --加载一个配置文件
    }
    
    /etc/nginx/nginx.d/default        --扩展配置(虚拟主机配置文件)
    第四个部分:server区域信息(配置一个网站 www/bbs/blog -- 一个虚拟主机)
    server {
    listen       80;                --指定监听的端口
    server_name  localhost;            --指定网站域名            
    root   /usr/share/nginx/html;    --定义站点目录的位置
    index  index.html index.htm;    --定义首页文件
    error_page   500 502 503 504  /50x.html;    --优雅显示页面信息
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    }

nginx服务的企业应用
    一、利用nginx服务搭建一个网站
    1、编写一个虚拟主机配置文件
    cd /etc/nginx/conf.d/
    vim www.conf
    server {
        listen        80;
        server_name   www.oldboy.com;
        location    /oldboy {
            root    /usr/share/nginx/html;
            index   oldboy.html;
        }     
    }
    
    2、需要获取开发人员编写的网站代码
    <html>
      <meta charset="utf-8">
      <head>
        <title>oldboy</title>
      </head>
      <body>
        <table border=1>
          <tr> <td>01</td> <td>oldboy</td> </tr>
          <tr> <td>02</td> <td>oldgirl</td> </tr>
          <tr> <td>03</td> <td>olddog</td> </tr>
        </table>
        <a href="http://blog.oldboyedu.com">
          <img src="oldboy.jpg" />
        </a>
       </body>
    </html>

3、重启nginx服务(平滑重启)
    方法一:systemctl reload nginx
    方法二:nginx -s reload
    
    nginx命令参数:
    -t                    :test configuration and exit
                          检查测试配置文件语法
    -s                   :send signal to a master process,quie,reopen,reload        
                          控制服务停止或者重新启动
                         
    4、编写DNS配置信息
    真实域名:在阿里云上进行DNS解析记录配置
    模拟域名:在windows主机的hosts文件中进行配置即可
              C:\Windows\System32\drivers\etc\hosts
             
    5、进行测试访问
    浏览器中:http://www.oldboy.com
    
    部署搭建网站常见错误:
    01. 网站服务配置文件编写不正确
        404 错误
        解决方法一:修改nginx配置文件---location
        解决方法二:在站点目录中创建相应目录或文件数据信息
        403 错误
        解决方法一:不要禁止访问
        解决方法二:没有首页文件
        
    02. DNS信息配置不正确
    

    03. 配置文件修改一定要重启服务;
        站点目录中代码文件信息调整,不需要重启服务
    
    二、利用nginx搭建一个多网站(www bss blog)
    1、创建多个虚拟主机配置文件
    bbs.conf
    server {
        listen        80;
        server_name    bbs.oldboy.top;
        location    / {
            root    /html/bbs;
            index    index.html;
        }
    }
    blog.conf
    server {
        listen        80;
        server_name    blog.oldboy.top;
        location    / {
            root    /html/blog;
            index    index.html;
        }
    }
    www.conf
    server {
        listen        80;
        server_name    www.oldboy.top;
        location    / {
            root    /html/www;
            index    index.html;
        }
    }
    
    2、创建站点目录和目录中的首页文件
    [root@web01 html]mkdir /html/{www,bbs,blog}
    [root@web01 html]for name in /html/{www,bbs,blog}; do echo "10.0.0.7 $name.oldboy.top" >> /html/$name/index.html ;done
    [root@web01 html]# for name in {www,bbs,blog}; do cat  /html/$name/index.html ;done
    10.0.0.7 www.oldboy.top
    10.0.0.7 bbs.oldboy.top
    10.0.0.7 blog.oldboy.top
    
    3、编写host解析文件
    10.0.0.7    www.oldboy.top    bbs.oldboy.top    blog.oldboy.top
    
    4、进行访问测试
    1)利用windows进行浏览器访问测试
    2)利用linux进行命令访问测试
    [root@web02 ~]# curl www.oldboy.top
    10.0.0.7 www.oldboy.top
    [root@web02 ~]# curl bbs.oldboy.top
    10.0.0.7 bbs.oldboy.top
    [root@web02 ~]# curl blog.oldboy.top
    10.0.0.7 blog.oldboy.top
    
    3)企业中虚拟主机访问方式
        a.基于域名的方式进行访问:
        b.基于地址的方式进行访问:(只能用指定地址访问)        --用于负载均衡+高可用服务
        server {
            listen        10.0.0.7:80;
            server_name    www.oldboy.top;
            location    / {
                root    /html/www;
                index    index.html;
            }
        }
        PS:服务配置文件中涉及到地址修改,必须重启nginx服务,不能平滑重启
        
        c.基于端口的方式进行访问:
        server {
            listen        8080;
            server_name    www.oldboy.top;
            location    / {
                root    /html/www;
                index    index.html;
            }
        }
        
        网站页面的访问原理:
        1、将域名进行解析    www.oldboy.top    ------ 10.0.0.7
        2、建立TCP的链接(四层协议)
            10.0.0.7    目标端口    80
        3、根据应用层HTTP协议发出请求
            请求报文:hosts:www.oldboy.top
        4、没有相同域名的server主机,会找满足端口要求的第一个主机
           显示主机的网站页面
            
    四、企业中网站的安全访问配置
        a.根据用户访问的地址进行控制
          10.0.0.0/24    www.oldboy.top/AV/不能访问
          172.16.1.0/24    www.oldboy.vom/AV/可以访问
          
          nginx访问模块:ngx_http_access_module
          举例配置:
          location / {
            deny  192.168.1.1;
            allow 192.168.1.0/24;
            allow 10.1.1.0/16;
            allow 2001:0db8::/32;
            deny  all;
          }
          指令用法
          Syntax:    deny address | CIDR | unix: | all;
          Default:    —
          Context:    http, server, location, limit_except
          
          1、编写配置文件
          server {
              listen        80;
              server_name    www.oldboy.top;
              location    / {
                  root    /html/www;
                  index    index.html;
              }
              location /AV {
                  root     /html/www;
                  index    index.html;
                  deny 10.0.0.0/24;
                  allow 172.16.1.0/24;    
              }
          }
          补充:
          location外面的信息,全局配置信息
          location里面的信息,局部配置信息
        
        b.根据用户访问进行认证
        nginx认证模块:module ngx_http_auth_basic_module
        举例配置:
        location / {
            auth_basic           "closed site";    ---开启认证功能
            auth_basic_user_file conf/htpasswd; ---加载用户密码文件
        }
        
        1、编写虚拟主机配置文件
        server { 
                listen          80;
                server_name     www.oldboy.top;
                location        / {
                        root    /html/www;
                        index   index.html;                auth_basic           "test";
                        auth_basic_user_file password/htpasswd;
                }
        
        2、创建密码文件(文件中密码信息必须是密文的)
        htpasswd    创建一个有密文信息的密码文件
        
        htpasswd命令参数说明:
        -c  Create a new file.    ***
            创建一个密码文件
        -n  Don't update file; display results on stdout.
            不会更新文件;显示文件内容信息
        -b  Use the password from the command line rather than prompting for it.    ***
            免交互方式输入用户密码信息
        -i  Read password from stdin without verification (for script usage).
            读取密码采用标准输入方式,并不做检查
        -m  Force MD5 encryption of the password (default).
            md5的加密算法
        -2  Force SHA-256 crypt() hash of the password (secure).
        -5  Force SHA-512 crypt() hash of the password (secure).
        -B  Force bcrypt aencryption of the password (very secure).
            使用bcrypt对密码进行加密
        -C  Set the computing time used for the bcrypt algorithm
            (higher is more secure but slower, default: 5, valid: 4 to 31).
            使用bcrypt algorithm对密码进行加密
        -r  Set the number of rounds used for the SHA-256, SHA-512 algorithms
            (higher is more secure but slower, default: 5000).
        -d  Force CRYPT encryption of the password (8 chars max, insecure).
            密码加密方式
        -s  Force SHA-1 encryption of the password (insecure).
            加密方式
        -p  Do not encrypt the password (plaintext, insecure).
            不进行加密
        -D  Delete the specified user.
            删除指定用户
        -v  Verify password for the specified user.
            
        修改密码文件权限
        chmod 600 /etc/nginx/htpasswd
        
        500 Internal Server Error
        01.内部程序代码编写有问题
        02.程序服务中文件权限不正确
        
        curl命令参数:
         -u, --user USER[:PASSWORD]  Server user and password
        [root@web02 ~]# curl www.oldboy.top -u oldboy
        Enter host password for user 'oldboy':
        10.0.0.7 www.oldboy.top

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值