马哥博客作业第十八周

第18周作业:

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

ngx_http_access_module      四层基于IP的访问控制,可以通过匹配客户端源IP地址进行限制
ngx_http_auth_basic_module    状态页,使用basic机制进行用户认证,在编译安装nginx的时候需要添加编译参数--withhttp_stub_status_module,否则配置完成之后监测会是提示语法错误
ngx_http_stub_status_module   状态统计模块
ngx_http_gzip_module       文件的压缩功能
ngx_http_gzip_static_module   静态压缩模块
ngx_http_ssl_module nginx    https 功能
ngx_http_rewrite_module     重定向模块,解析和处理rewrite请求
ngx_http_referer_module     防盗链功能,基于访问安全考虑
ngx_http_proxy_module       将客户端的请求以http协议转发至指定服务器进行处理
ngx_stream_proxy_module     tcp负载,将客户端的请求以tcp协议转发至指定服务器处理
ngx_http_fastcgi_module     将客户端对php的请求以fastcgi协议转发至指定服务器助理
ngx_http_uwsgi_module       将客户端对Python的请求以uwsgi协议转发至指定服务器处理
ngx_http_headers_module     可以实现对头部报文添加指定的key与值
ngx_http_upstream_module    负载均衡模块,提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
ngx_stream_upstream_module   后端服务器分组转发、权重分配、状态监测、调度算法等高级功能
ngx_http_fastcgi_module     实现通过fastcgi协议将指定的客户端请求转发至php-fpm处理
ngx_http_flv_module       为flv伪流媒体服务端提供支持

2、请写出用户通过 nginx 访问的工作过程

首先,用户通过客户端浏览器访问服务器,服务器端的Nginx服务是由俩个工作进程组成的,Master主进程负责接收访问请求,新请求到来时,
主进程传递信号给worker进程,由worker进程对请求进行处理.处理完后将结果返回给Master进程,由Master将最终结果返回给用户.

3、请写出实现 nginx-https 访问得步骤过程

1.客户端发起https请求
  客户端访问某个web端的https地址,一般都是443端口
2.服务器的配置
  采用https协议的服务器必须有一套证书,可以通过一些组织申请,也可以自己制作.
3.传送证书.
  服务器给客户端传递证书
4.客户端解析证书
  客户端首先会验证公钥的有效性,如果有异常,则会弹出一个警告框提示证书可能存在问题;如果没问题,就生成一个随机值,然后用证书对
  该随机值进行加密
5.传送步骤4 的加密数据
  将证书加密后的随机值传递给服务器
6.服务器端解密信息
  服务器用私钥解密步骤5加密后的随机值之后,得到客户端传过来的随机值(私钥),然后将内容通过该值进行对称加密.
7.传输加密后的信息
  服务器将用私钥加密后的数据传递给客户端,将客户端可以被还原出原数据内容
8.客户端解密信息
  客户端用之前生成的私钥解密服务器端传递过来的数据.

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

   server_tokens off;

5、请写出 nginx 各种优化参数。以及每个参数得作用是什么

mian模块:
worker_processes auto; 启动nginx工作进程的数量.

worker_cpu_affinity 0001 0010 0100 1000; 将Nginx工作进程绑定到指定的0-3cpu核心.可以减少cpu对进程的资源分配和回收以及内存管理,可以有效提升Nginx服务器的性能.

workerrlimit_nofile 65536;所有woker进程能打开的文件数量上限,设置这个必须要与ulimit -n 相一致,最好在/etc/security/limits.conf里面修改"* - nproc 65536".


events模块:
worker_connections 65536;设置单个工作进程的最大并发连接数

use epoll ; 使用epoll事件驱动

accept_mutex on; 默认是off,新请求会唤醒所有的worker进程,造成多余的cpu消耗.可以适当优化设置为on

mulit_accpet on; on时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,默认是off


http模块:

server_tokens on ; 隐藏nginx版本号信息,若要自定义响应报文的Nginx版本信息,需要修改源码文件,重新编译

如果
server_tokens on ,修改src/core/nginx.h 的 13-14行
#define NGINX_VERSION "1.18.9" 中的1.18.9改为想要的文字
#define NGINX_VER "nginx/" NGINX_VERSION 中的nginx改为想要的文字
如果server_tokens off,修改src/http/ngx_http_header_filter_module.c 的49行
statuc char ngx_http_server_string[] = "Server: nginx" CRLF; 中的nginx改为自己想要的文字即可.

posted @ 2020-10-03 19:26  IRui  阅读(142)  评论(0编辑  收藏  举报