N46-第十八周作业

1、请列出nginx常用模块的各个优缺点以及区别
答:
(1)ngx_http_access_module:可以通过匹配客户端源IP地址进行限制访问。
优点:限制IP访问服务器。
缺点:占用一定比例的系统资源。
(2)ngx_http_auth_basic_module:提供账户认证功能。
(3)ngx_http_autoindex_module:作为下载服务器
(4)ngx_http_stub_status_module:监控nginx状态页。
(5)ngx_http_gzip_module:用于将指定类型的文件进行压缩然后再传输给客户端。
优点:降低出口带宽的利用率。
缺点:占用相应的CPU资源。
(6)ngx_http_ssl_module:实现nginx的https功能。
优点:使用https加密传输,保障数据安全。
缺点:加密后,压力测试时并发及响应速度会变慢。

 

2、请写出用户通过nginx访问的工作过程
答:
(1)用户通过客户端浏览器输入要访问的网站,浏览器会请求dns服务器将域名解析成ip地址。
(2)通过层层路由转发,找到网站服务器,网站服务器收到http请求并进行响应。
(3)此时,客户端和服务器端要进行tcp的三次握手协议,对数据的稳定性进行保障。
(4)在三次握手后,由服务器端的nginx服务器来响应客户端的http请求。nginx启动时,以一个master进程和多个work进程进行工作,master进程接收信号后,将信号分发给work进程,work进程去处理来自客户端的请求。静态内容则服务器直接将资源反馈给客户端,动态内容则转给后端程序,由后端程序进行后续处理,处理后再反馈给客户端。
(5)客户端收到服务器反馈的响应报文后,进行网页文件的渲染工作,最终浏览器将渲染结果呈现在网页页面上。

 

3、请写出实现nginx-https访问得步骤过程
答:
(1)编译nginx时,在./configure命令处,添加--with-http_ssl_module参数。
(2)使用openssl命令,生成ca证书,服务器私钥,服务器证书。
(3)将服务器证书和ca证书合并为一个证书文件,并在nginx.conf里配置https选项。
server {
listen 80;
listen 443 ssl;
ssl_certificate /**/**/**.crt; #服务器证书文件路径
ssl_certificate_key /**/**/**.key; #服务器私钥文件路径
ssl_session_cache shared:sslcache:20m; #开启ssl缓存
ssl_session_timeout 10m; #ssl验证超时时间
root /data/nginx/html; #网页文件根路径
}
(4)测试nginx的配置是否正确,如果正确,则重新加载nginx服务。
(5)客户端用浏览器访问网站时,进行服务器证书的验证工作,由于是私有ca,所以会提示证书不安全,忽略后,可以正常显示加密后的网页文件。

 

4、请写出隐藏nginx版本号得过程
答:
(1)仅隐藏nginx版本号
修改nginx的配置文件nginx.conf,将server_tokens参数设定为off。
(2)修改nginx信息及版本号
在server_tokens on的情况下,修改src/core/nginx.h文件,修改第13-14行
#define NGINX_VERSION "1.68.9"
#define NGINX_VER "wanginx/" NGINX_VERSION

在server_tokens off的情况下,修改src/http/ngx_http_header_filter_module.c文件,在49行
static char ngx_http_server_string[] = "Server: ngxin" CRLF;
把其中的nginx改为自己想要的文字即可。

 

5、请写出nginx各种优化参数。以及每个参数得作用是什么?
答:
worker_processes auto #启动nginx工作进程的数量,一般设为和cpu核心数相同
worker_cpu_affinity 0001 0010 0100 1000; #将cpu核心数与工作进程进行绑定,提高速度。
worker_priority 0; #工作进行优先级-19~20
worker_rlimit_nofile 65535; #nginx所有连接数,要与系统的ulimit -n的值保持一致。
work_connections 65535; #设置单个工作进行的最大并发连接数
accept_mutex on; #同一时刻一个请求轮流由work进程处理,防止同时唤醒所有的worker,避免出现“惊群”现象。
multi_accpet on; #每个工作进程可以同时接受多个新的网络连接。

posted @ 2020-10-11 08:21  索玛  阅读(75)  评论(0)    收藏  举报