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   #防止网络阻塞

     

  • 相关阅读:
    idea设置全局ignore
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistributable. Please ins
    win 2012 安装mysql 5.7.20 及报错 This application requires Visual Studio 2013 Redistr
    kafka 删除 topic
    java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
    Centos中使用yum安装java时,没有jps的问题的解决
    Spring 整合Junit
    Spring纯注解配置
    Spring 基于注解的 IOC 配置
    打印java系统的信息
  • 原文地址:https://www.cnblogs.com/tz66/p/13744209.html
Copyright © 2011-2022 走看看