• Nginx静态服务,域名解析


    安装这里就不写了在LNMP里有具体的安装

    1.1 常用来提供静态Web服务的软件有如下三种:

        Apache:这是中小型Web服务的主流,Web服务器中的老大哥。

        Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大。

               Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展。

        Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高。在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧、豆瓣等众多网站都有Lighttpd奋斗的身影。

       

           常用来提供动态服务的软件

        PHP(FastCGI):大中小型网站都会使用,动态网页语言PHP程序的解析容器。它可配合Apache解析动态程序,不过,这里的PHP不是FastCGI守护进程模式,而是mod_php5.so(module)。也可配合Nginx解析动态程序,此时的PHP常用FastCGI守护进程模式提供服务。(.php)

        Tomcat:中小企业动态Web服务主流,互联网Java容器主流(如jsp、do)。

        Resin:大型动态Web服务主流,互联网Java容器主流(如jsp、do)。

        IIS(Internet information services):微软windows下的Web服务软件(如asp、aspx)

    1.2 nginx网站服务软件介绍

        一个开源的,支持高性能、高并发的WWW服务器和代理服务软件(消耗的资源小)

          

    1.3 Nginx HTTP服务器的特色及优点。

        支持高并发:能支持几万并发连接(特别是静态小文件业务环境)

        资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB(ab webbench)

        可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。

        具备Squid等专业缓存软件等的缓存功能。

        支持异步网络I/O事件模型epoll(Linux 2.6+)(apache select)

    1.4     nginx三大主要功能:

        01. 提供web服务功能

      02. 提供负载均衡功能

      03. 提供缓存加速功能

    1.5 为什么Nginx总体性能比Apache高

           Nginx使用最新的epoll(Linux 2.6内核)和Kqueue(freebsd)异步网络I/O模型,

           而Apache使用的是传统的select模型

          

           第一个比喻:宿舍管理员大妈

           一个一个屋子去找你的女朋友,select模型宿管大妈

           利用登录人员信息方式,快速查找人员信息,epoll模型宿管大妈

          

           第二个比喻:幼儿园阿姨

           一个一个询问是否去wc,select模型幼儿园阿姨

        画个圈,上wc的小朋友主动走到圈里来,epoll模型幼儿园阿姨

    1.6 nginx软件程序目录结构

        [root@web01 nginx]# ll

        drwxr-xr-x 2 root root 4096 Feb  2 10:41 conf     ---配置文件目录

        drwxr-xr-x 2 root root 4096 Feb  2 10:41 html     ---站点目录

        drwxr-xr-x 2 root root 4096 Feb  2 10:54 logs     ---日志目录

        drwxr-xr-x 2 root root 4096 Feb  2 10:41 sbin     ---保存服务命令目录

       

        配置文件目录说明:

        mime.types        --- 媒体资源类型文件

        nginx.conf        --- nginx服务主配置文件

        精简nginx配置文件信息      

        grep -Ev "#|^$" nginx.conf.default >nginx.conf

       

        nginx配置文件区域分类

        a main区块

        b event区块

        c http区块

          server区块(可以有多个)

             location区块(可以有多个)

    1.7 nginx服务命令参数说明

       /application/nginx/sbin/nginx -s reload   --- -s参数表示一个信号参数,后面可以指定一些信号信息

                                                     信号信息:reload stop

       /application/nginx/sbin/nginx -t          --- 检查配置文件语法信息  

    1.8 实践配置编写配置文件

    egrep  -v "#|^$" nginx.conf.default >nginx.conf   #过滤一下配置文件中的空行,注释行

    举例

     [root@web01 conf]# cat nginx.conf

          worker_processes  1;

          events {

              worker_connections  1024;

          }

          http {

              include       mime.types;

              default_type  application/octet-stream;

              sendfile        on;

              keepalive_timeout  65;

              server {

                  listen       80;

                  server_name  www.etiantian.org;

                  root   html/www;

                  index  index.html index.htm;

              }

              server {

                  listen       80;

                  server_name  bbs.etiantian.org;

                  root   html/bbs;

                  index  index.html index.htm;

              }

              server {

                  listen       80;

                  server_name  blog.etiantian.org;

                  root   html/blog;

                  index  index.html index.htm;

              }

          }

         

          强调说明(*****):当nginx配置文件中,涉及到IP地址信息改动,都需要重启nginx服务,

                             不能采用平滑重启,否则配置不生效

     

       可以查看nginx运行状态信息。

       vim extra/state.conf

       server{

        listen  80;

        server_name  state.etiantian.org;

        location / {

          stub_status on;

          access_log   off;

         }

       }

    Nginx服务日志信息

       01. 错误日志

       Syntax:   error_log file [level];

       Default: 

       error_log logs/error.log error;

       Context: main, http, mail, stream, server, location

       #error_log  logs/error.log;

       #error_log  logs/error.log  notice;

       #error_log  logs/error.log  info;

      

       vim nginx.conf

       error_log  /tmp/error.log error;

      

       补充说明:

       ===========================================================================================

       错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。

       但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。

       error_log 级别分为 debug, info, notice, warn, error, crit  默认为crit

       该级别在日志名后边定义格式如下:

       error_log  /your/path/error.log crit; 

      

       crit 记录的日志最少,而debug记录的日志最多。

       如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,

       那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富

       ===========================================================================================

      

      

       02. 访问日志(重点关注)

       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  logs/access.log  main;                    --- 调用定义格式信息,生成访问日志

       $remote_addr       10.0.0.1           --- 访问客户端的源地址信息

       $remote_user          -               --- 访问客户端认证用户信息   ???

       [$time_local]                         --- 显示访问时间

       $request        GET / HTTP/1.1        --- 请求行信息

       $status              304              --- 状态码信息(304状态码利用缓存显示页面信息)

       $body_bytes_sent                      --- 服务端响应客户端的数据大小信息

       $http_referer                         --- 记录链接到网站的域名信息  ???

       $http_user_agent                      --- 用户访问网站客户端软件标识信息

                                                 用户利用客户端浏览器测试访问时,win10默认浏览器会有异常问

       $http_x_forwarded_for                 --- ???  反向代理

       官方链接:http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

         

      

       03. 日志要进行切割

           01. 利用shell脚本实现日志切割

              [root@web01 scripts]# vim cut_log.sh

           #!/bin/bash

          

           data_info=$(date +%F-%H:%M)

          

           mv /application/nginx/logs/access.log /application/nginx/logs/access.log.$data_info

           /application/nginx/sbin/nginx -s reload

           # cut nginx log cron

           * */6 * * * /bin/sh /server/scripts/cut_log.sh &>/dev/null

             

              02. 利用logrotate服务程序进行日志切割

    总结取状态码方法

    curl -I www.etiantian.org/oldboy/ 2>/dev/null|awk 'NR==1{print $2}'

    作用:编译以后进行网站运行状态监控

    1.1 rewrite指令作用

       01. 实现域名地址信息跳转

       02. 用于做伪静态

           www.etiantian.org/oldboy?edu.html   ---动态资源

              www.etiantian.org/oldboy-edu.html   ---伪静态

          

       实现类似百度重写域名的功能?

       baidu.com  ===>  www.baidu.com

       etiantian.org  ===> bbs.etiantian.org

      

       rewrite

      

       last

       location / {

         rewrite xxx break

       }

       location /images/ {

         rewrite xxx 

       }

      

      

       rewrite指令实践操作一:(错误)

       [root@web01 extra]# cat bbs.conf

        server {

            listen       80;

            server_name  www.etiantian.org bbs.org;

            rewrite ^/(.*) http://www.etiantian.org/$1 permanent;

            root   html/bbs;

            index  index.html index.htm;

        }

       

        [root@web01 extra]# curl -L etiantian.org

        curl: (47) Maximum (50) redirects followed

           [root@web01 extra]# curl -Lv etiantian.org   --- 显示无限循环过程

           说明:以上配置进入了无限循环状态

        rewrite指令实践操作二:(正确)

        cat bbs.conf

        server {

            listen 80;

            server_name etiantian.org;

            rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent;

        }

        server {

            listen       80;

            server_name  bbs.etiantian.org bbs.org;

            root   html/bbs;

            index  index.html index.htm;

        }

          

        rewrite指令实践操作三:(正确)

        [root@web01 extra]# cat bbs.conf

        server {

            listen       80;

            server_name  bbs.etiantian.org bbs.org;

            if ($host ~* "^etiantian.org$") {

               rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent;

            }

            root   html/bbs;

            index  index.html index.htm;

        }

     Nginx的rewrite功能在企业里应用非常广泛:

        可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。

        为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

        网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com。

        根据特殊变量、目录、客户端的信息进行URL跳转等。

      curl 命令参数总结:

      1. -I    只显示响应报文起始行和响应头部信息,不会显示响应主体内容

      2. -v    显示请求报文和响应报文详细内容

      3. -L    追踪http访问跳转过程

      4. -s    将错误信息追加到空

      5. -w    指定显示响应报文中的哪些

         -w "%{http_code}"  只显示响应报文中的状态码信息

      6. -o    表示将没有指定的响应报文信息追加到空

      7. -u    表示指定认证用户名称或者用户密码信息

     Nginx访问认证 

       部署过程:

       第一个里程碑:编写配置文件,加入认证功能

       auth_basic           "oldboy training";

       auth_basic_user_file /application/nginx/conf/htpasswd;

      

       [root@web01 extra]# cat bbs.conf

        server {

            listen       80;

            server_name  bbs.etiantian.org bbs.org;

            auth_basic           "oldboy training";

            auth_basic_user_file /application/nginx/conf/htpasswd;

            root   html/bbs;

            index  index.html index.htm;

        }

       第二个里程碑:编写认证文件

       利用htpasswd命令生成密文密码信息

       rpm -qf `which htpasswd`

       httpd-tools-2.2.15-59.el6.centos.x86_64

    yum install httpd-tools -y

     

       htpasswd -bc /application/nginx/conf/htpasswd oldboy oldboy123  ---生成认证文件

       chmod 400 /application/nginx/conf/htpasswd

      

       chown www.www /application/nginx/conf/htpasswd

       第三个里程碑:重启服务进行测试

       401 Authorization Required     --- 要求用户进行认证

       500                            --- worker进程无法读取用户请求的问题,权限问题

      

       [root@web01 extra]# curl bbs.etiantian.org -u oldboy

       Enter host password for user 'oldboy':

       10.0.0.7 web01 bbs

  • 相关阅读:
    在win7系统下安装把Ubuntu17.04安装在另一个硬盘开机无法进入Ubuntu问题的一种解决办法。【转】
    快速上手Ubuntu之安装篇——安装win7,Ubuntu16.04双系统【转】
    win7 64位系统与Ubuntu14.04 64位系统双系统安装【转】
    kernel中对文件的读写【学习笔记】【原创】
    快速解决Android中的selinux权限问题【转】
    Android如何配置init.rc中的开机启动进程(service)【转】
    linux内核驱动中对文件的读写 【转】
    很好的 DHCP协议与dhcpcd分析【转】
    android DHCP流程【转】
    Android wifi 从连接态自动断开的解决办法(dhcp导致)【转】
  • 原文地址:https://www.cnblogs.com/zdqc/p/9435986.html
Copyright © 2020-2023  润新知