zoukankan      html  css  js  c++  java
  • 作业第十八周

    1、请列出 nginx 常用模块的各个优缺点以及区别

     ngx_http_auth_basic_module:实现基于用户的访问控制,使用basic机制进行用户认证,优点:使用登陆对话框的方式实现用户认证,缺点:认证文件依赖httpd-tools软件包。
    ngx_http_stub_status_module:http状态统计,优点:可以查看http活动状态连接数、总连接数、成功的连接数、总共处理的请求数等,缺点:需要单独写个location。
    ngx_http_ssl_module:用于nginx支持https协议,优点:支持自签名证书和通配符证书,缺点:使用低版本openssl有安全漏洞。
    2、请写出用户通过 nginx 访问的工作过程

    1、浏览器输入网址,通过DNS服务器将域名解析成IP地址。
    2、IP地址路由到nginx服务器,经过TCP三次握手后发送http请求报文。
    3、nginx服务器收到请求报文后,根据资源类型将处理请求直接处理或转发给后端服务器。
    4、后端服务器将处理结果返回给nginx服务器。
    5、nginx服务器将响应报文发给客户端,通过四次挥手关闭TCP连接,完成响应请求。
    6、用户浏览器呈现响应页面。
    3、请写出实现 nginx-https 访问得步骤过程

    1.客户端发起HTTPS请求
    客户端访问某个Web端的https地址,一般都是443端口


    2.服务端的配置
    采用https协议的服务器必须要有一套证书,可也通过一些组织申请,也可也自己制作,目前国内很多网站都是自己制作的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,就像一把锁和钥匙,正常情况下只有你的钥匙才可也打开你的锁,你可也把这个送给别人让他锁住一个箱子,里面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可也打开的。


    3.传送证书
    服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。


    4.客户端解析证书
    这部分工作是由客户端完成的,首先验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会弹出一个警告框提示信息证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加密,就像2步骤所说把随机值锁起来,不让别人看到。

    5.传送4步骤的加密数据
    就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的通信就可也通过这个随机值进行加密解密了。

    6.服务端解密信息
    服务端用私钥解密5步骤的随机值之后,得到客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,对称加密就是将信息和私钥通过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。

    7.传输加密后的信息
    服务端将用私钥加密后的数据传递给客户端,客户端可也被还原出原数据内容。

    8.客户端加密信息
    客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据一直是加密的,因此即使第三方获取到数据也无法知道其详细内容。

    4、请写出隐藏 Nginx 版本号得过程

    修改server字段
    如果想自定义响应报文的nginx版本信息,需要修改源码文件,重新编译
    如果nginx配置文件中的字段设定为server_tokens on,请修改 src/core/nginx.h 修改13-14行,如下示例
    [root@centos8-1 nginx-1.18.0]$pwd
    /usr/local/src/nginx-1.18.0
    [root@centos8-1 nginx-1.18.0]$vim src/core/nginx.h
    #define NGINX_VERSION "1.1999"     ##自定义修改版本号
    #define NGINX_VER "zhanginx/" NGINX_VERSION   ##自定义修改版本信息

    如果nginx配置文件中的字段设定为server_tokens on,请修改 src/http/ngx_http_header_filter_module.c 
    第49行,如下示例:
    static u_char ngx_http_server_string[] = "Server: zhanginx" CRLF;   

    ####自定义修改版本
    修改完之后回到nginx源码包里面,然后重新编译即可

    [root@centos8-1 nginx-1.18.0]$nginx -V   ##编译完成测试
    nginx version: zhanginx/1.1999

    [root@centos8-2 ~]$curl 10.0.0.8/test.php -I     ##编译完成测试
    HTTP/1.1 200 OK
    Server: zhanginx
    Date: Fri, 25 Sep 2020 03:31:08 GMT
    Content-Type: text/html
    Content-Length: 20
    Last-Modified: Fri, 25 Sep 2020 03:18:08 GMT
    Connection: keep-alive
    ETag: "5f6d6170-14"
    Accept-Ranges: bytes

     注:src路径是在nginx源码包解压完成cd进去的   

    5、请写出 nginx 各种优化参数。以及每个参数得作用是什么
    (1)worker_processes #启动nginx工作进程的数量,一般设为和cpu核心数相同
    (2)worker_cpu_affinity #将nginx工作进程绑定到指定的cpu核心,默认Nginx是不进行进程绑定的。
    (3)worker_priority #工作进程优先级
    (4)worker_rlimit_nofile #所有worker进程能打开的文件数量上限
    (5)gzip on #开启文件压缩
    (6)keepalive_requests #允许最大请求的数量 keepalive_timeout #长连接超时时间
    (7)use epoll  #使用epoll模式
    (8)multi-accept on  #尽可能多的接受用户请求
    (9)tcp_nopush on   #防止网络阻塞

     

  • 相关阅读:
    CH1301 邻值查找【set应用】
    poj1185 炮兵阵地【状压DP】
    codeforces#516 Div2---ABCD
    2017ACM-ICPC沈阳区域赛
    poj2411 Mondriaan's Dream【状压DP】
    hdu2196 Computer【树形DP】【换根法】
    poj3345 Bribing FIPA【树形DP】【背包】
    poj1463 Strategic game【树形DP】
    poj1191 棋盘分割【区间DP】【记忆化搜索】
    CH5E09 能量相连【区间DP】
  • 原文地址:https://www.cnblogs.com/tz66/p/13744209.html
Copyright © 2011-2022 走看看