nginx服务器

一 nginx web服务软件php

 用户访问网站的流程:html

  利用DNS进行域名的解析python

  利用tcp的三次握手过程创建连linux

  http请求报文数据:nginx

   1.0:tcp的短连接web

    什么是短连接:在http/1.0中默认使用短连接,也就是客户端和服务端每进行一次http操做都会创建一次连接,同时操做完毕以后也会就会当即断开链接。也就是说客户端每访问一次服务端就会创建一次连接,访问结束之后就会当即断开链接正则表达式

   1.1:tcp的长链接数据库

    什么是长链接:从http/1.1事后默认使用长链接,用于保持链接的特性,若是使用长链接的http请求会在响应头加上Connection:keep-alive这段代码。在使用长链接的额状况下,客户端和服务端之间创建的http协议在一次请求创建链接事后就会保持连接,客户端再次访问服务器的时候仍是基于此次的连接进行访问。keep-alive不是永久保存连接的,他只有一段时间的保持连接不断,能够在不一样服务器上面设置保存连接的时间后端

  http响应报文数据:浏览器

   curl -I www.baidu.com    : 利用命令显示响应报文起始行和包头信息。

   curl -v www.baidu.com   :显示http协议访问访问网站的详细过程信息。

   wget --debug www.baidu.com  : 显示输出信息

  利用tcp的四次挥手过程断开链接

 url和uri的区别:

  url:是uniform resource locator缩写,是统一资源定位器,它是一种具体的url。能够用来标识一个资源,而且还指明如何locate(定位)这个资源。

  uri:是uniform resource identifier的缩写,廷议资源标识符,用于标识一个资源的。

 网页资源:静态资源页面和动态资源页面

  静态资源页面几个特征:

1)    每一个页面都有一个固定的URL地址,且URL通常以.html、.htm、.shtml等常见形式为后缀,并且地址中不含有问号“?”或“&”等特殊符号。
2)    网页内容一经发布到网站服务器上,不管是否有用户访问,每一个网页的内容都是保存在网站服务器文件系统上的,也就是说,静态网页是实实在在保存在服务器上的文件实体,每一个网页都是一个独立的文件。
3)    网页内容是固定不变的,所以,容易被搜索引擎收录(容易被用户找到)(优势)。
4)    由于网页没有数据库的支持,因此在网站制做和维护方面的工做量较大,当网站信息量很大时,彻底依靠静态网页比较困难(缺点)。
5)    网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
6)    网页程序在用户浏览器端解析,如IE浏览器,程序解析效率很高,因为服务器端不进行解析,而且不须要读取数据库,所以服务器端能够接受更多的并发访问。当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不作任何解析)。待客户端拿到数据后,在浏览器端解析并展示出来(优势)。
View Code

  动态资源页面几个特征:

1)    网页扩展名后缀常见为:.asp、.aspx、.php、.js、.do、.cgi等。    ※
2)    网页通常以数据库技术为基础,大大下降了网站维护的工做量。    
3)    采用动态网页技术的网站能够实现更多的功能,如用户注册、用户登陆、在线调查、投票、用户管理、订单处理、发博文等。
4)    动态网页并非独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并可能经过读取数据库来返回一个完整的网页内容。
5)    动态网页中的“?”在搜索引擎的收录方面存在必定的问题,搜索引擎通常不会从一个网站的数据库中访问所有网页,或者出于技术等方面的考虑,搜索蜘蛛通常不会去抓取网址中“?”后面的内容,所以在企业经过搜索引擎进行推广时,须要针对采用动态网页的网站作必定的技术处理(伪静态技术),以便适应搜索引擎的抓取要求。(缺点)
程序在服务器端解析,这至关于顾客点餐,饭店厨师作饭作菜,耗时长、效率低。在这个过程当中,会消耗大量的CPU和内存、I/O等资源,而且多数还要提供读取数据库等服务,所以,其访问效率远不如静态网页,在服务器端解析动态程序的服务常见的有PHP引擎、Java容器(Tomcat、Resin、Jboss、Weblogic)等。
View Code

  伪静态资源页面:从网站的URL地址看,伪静态表面上看起来是静态内容(如地址结尾带html),但这实际上是经过rewrite规则实现的URL地址重写。改写后的URL地址规范、美观,有利于搜索引擎抓取,以及提高用户访问体验。如:http://oldboy.blog.51cto.com/2561410/803606和http://www.discuz.net/forum-3967-1.html这两个地址都是伪静态的。由于伪静态网页仍是动态网页,因此从性能上考虑,伪静态功能不但没有提高网站性能,反而会下降网站的性能。这一点读者要理解。可能有些读者就会有疑问了,为何动态网页不能直接转成静态网页呢?

 应用部署nginx网站服务:

  支持高并发:可以支持几万并发链接(特别是静态小文件业务环境)

  资源消耗小:在3万并发链接下,开启10个nginx线程消耗的内存不懂200mb

  能够作http反向代理和加速缓存,及负载均衡功能,内置对RS节点服务器健康检查功能,这个就至关因而专业的Haproxy软件或LVS的功能

  具有Squuid等专业的缓存软件的缓存功

  支持异步网络I/O事件模型epoll

  select和epoll的区别:http://www.cnblogs.com/fangjie0410/p/7688365.html

 利用编译安装方式安装nginx软件的方法:

  linux的几种安装方式:

    1. yum安装软件
    2. rpm -ivh安装软件
    3. 编译安装软件
    4. 利用软件二进制包方式(绿色软件)
View Code

  第一步:解决软件的依赖关系

   yum install pcre-devel openssl-devel -y

  第二步:建立nginx进程管理用户

   useradd www -M -s /sbin/nologin :  建立虚拟用户
   id www : 检查指定用户是否存在

  第三步:编译安装nginx软件

   编译安装软甲三部曲:

    ①. 配置软件
        cd /server/tools/
        tar xf nginx-1.12.2.tar.gz 
        cd /server/tools/nginx-1.12.2
        ./configure --help               --- 检查软件能够配置的参数信息
        ./configure --prefix=/application/nginx-1.12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module    
    ②. 编译软件
        make
    ③. 编译安装
        make install
View Code

  第四步:建立软链接

   ln -s /application/nginx-1.12.2/ /application/nginx

  第五步:启动nginx服务

    /application/nginx/sbin/nginx
    ps -ef|grep nginx
    setenforce 0                  --- 关闭selinux安全功能
    /etc/init.d/iptables stop     --- 关闭iptables防火墙功能  
View Code

 nginx详细配置说明:

    conf             --- nginx程序配置文件保存目录 
    nginx.conf   --- 程序主配置文件
    grep -Ev "#|^$" nginx.conf.default >nginx.conf    --- 精简化nginx默认配置文件
View Code

 nginx配置文件的案例:

    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;
        }
    }
View Code

 建立出相应站点目录和网站页面文件

    mkdir /application/nginx/html/{www,bbs,blog} -p
    for name in www bbs blog;do echo "10.0.0.7 $name" >/application/nginx/html/$name/index.html;done
        for name in www bbs blog;do cat /application/nginx/html/$name/index.html;done
View Code

 重启nginx服务加载新的nginx的配置文件:/application/nginx/sbin/nginx -s reload

 利用浏览器默认访问网站

  作好DNS解析:

    10.0.0.10    www.etiantian.org bbs.etiantian.org blog.etiantian.org
    
    html             --- 站点目录
    logs             --- nginx程序日志目录
    tail -f  access.log      --- 追踪日志信息(实时产生的日志信息)
View Code

  nginx程序记录客户端访问状况日志信息

    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         --- 访问者(客户端)的源公网IP地址信息
    $remote_user         --- 登陆用户信息
    [$time_local]        --- 访问时间信息
    $request             --- 请求的页面
    $status              --- 显示响应状态信息
    $body_bytes_sent     --- 响应报文主体大小
    $http_referer        --- 记录有什么网站进行盗链了 
    $http_user_agent     --- 表示客户端用什么浏览器浏览的网站
    $http_x_forwarded_for     --- 当配置反向代理负载均衡时候
        
    sbin             --- nginx程序命令保存目录
        nginx命令参数说明
        -t           --- 检查nginx配置文件语法是否正确
        -s           --- 控制服务运行状态
           -s stop   --- 中止nginx服务
           -s reload --- 平滑重启nginx服务
View Code

二 nginx的反向代理和负载均衡

 安装负载均衡服务软件

  第一步:解决软件以=依赖关系

   yum install pcre-devel openssl-devel -y

    第二步:建立nginx进程管理用户

useradd www -M -s /sbin/nologin
id www
View Code

  第三步:编译安装nginx软件

   编译安装软件三步曲:

#①. 配置软件
mkdir /server/tools/ -p
cd /server/tools/
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar xf nginx-1.12.2.tar.gz 
cd /server/tools/nginx-1.12.2
./configure --prefix=/application/nginx-1.12.2 --user=www --group=www --with-http_ssl_module --with-http_stub_status_module    
#②. 编译软件
make
#③. 编译安装
make install
View Code

  第四步:建立软链接

/application/nginx/sbin/nginx
ps -ef|grep nginx
View Code

 配置nginx的web服务:for name in www bbs;do echo "$(hostname) $name.etiantian.org" >/application/nginx/html/$name/oldboy.html;done

 利用负载均衡服务器测试访问后端节点

    [root@python7 ~]# curl -H host:www.etiantian.org  10.0.0.10/oldboy.html
    web01 www.etiantian.org
    [root@python7 ~]# curl -H host:bbs.etiantian.org  10.0.0.10/oldboy.html
    web01 bbs.etiantian.org
    [root@python7 ~]# curl -H host:www.etiantian.org  10.0.0.20/oldboy.html
    web02 www.etiantian.org
    [root@python7 ~]# curl -H host:bbs.etiantian.org  10.0.0.20/oldboy.html
    web02 bbs.etiantian.org
View Code

 编写nginx反响代理服务配置文件

    01. 定义我能够调度的web节点信息
        upstream oldboy {
          server  10.0.0.10:80;
          server  10.0.0.20:80;
        }
    02. 接收到请求后。进行调度
        location / {
           proxy_pass http://oldboy;
        }

     proxy_set_header host $host;    --- 修改反向代理到后端节点中请求报文头部信息
                                         请求报文头部中host信息

     ngx_http_proxy_module
     ngx_http_upstream_module
View Code

 三 参数location得理解

“~”用于区分大小写(大小写敏感)的匹配;   ~ /images {}

“~*” 用于不区分大小写的匹配。还能够用逻辑操做符!对上面的匹配取反,即!~ 和 !~*。


“^~”做用是在常规的字符串匹配检查以后,不作正则表达式的检查,即若是最明确的那个字符串匹配的location配置中有此前缀,那么不作正则表达式的检查。
[root@oldboyedu-s6 nginx-1.12.2]# cat  conf/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 etiantian.org;
    root   html/www;
    location / {
       return 401;
    }

    location /documents/ {
        return 403;
    }
    location ^~ /images/ {
        return 404;
    }
    location ~* \.(gif|jpg|jpeg)$ {
        return 500;
    }
  }
}



^~
~*
/documents/
/


第1名:“location  ~* \.(gif|jpg|jpeg)$ {”     正则匹配
第2名:“location  /documents/ {”     匹配常规字符串,若是有正则则优先匹配正则。
第3名:“location  / {”     全部location都不能匹配后的默认匹配。



[root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200
HTTP/1.1 401 Unauthorized
Server: nginx/1.12.2
Date: Thu, 15 Mar 2018 04:13:41 GMT
Content-Type: text/html
Content-Length: 195
Connection: keep-alive

[root@oldboyedu-s6 nginx-1.12.2]# 
[root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/documents/index.html
HTTP/1.1 403 Forbidden
Server: nginx/1.12.2
Date: Thu, 15 Mar 2018 04:14:42 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive

[root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/documents/w.jpg
HTTP/1.1 500 Internal Server Error
Server: nginx/1.12.2
Date: Thu, 15 Mar 2018 04:15:56 GMT
Content-Type: text/html
Content-Length: 193
Connection: close

[root@oldboyedu-s6 nginx-1.12.2]# 
[root@oldboyedu-s6 nginx-1.12.2]# curl -I  10.0.0.200/images/www.jpg
HTTP/1.1 404 Not Found
Server: nginx/1.12.2
Date: Thu, 15 Mar 2018 04:16:52 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
View Code
相关文章
相关标签/搜索