马哥架构第1周课程作业

时间:2023-01-08 17:53:24

一. 画图解释一次web请求的过程。涉及tcp/ip, dns, nginx,wsgi。

简化版流程

1 DNS
2 CDN
3 TCP
4 Web服务器处理
1)建立连接
2)接收清求
3)处理请求 GET、POST等方法
4)获取资源
5)构建响应报文
6)发送响应
7)记录日志
5 浏览器接收响应报文,进行页面渲染

详细版

  1. 浏览器通过DNS把域名解析成对应的IP地址
  2. 根据这个IP地址在互联网上找到对应的服务器,建立Socket连接
  3. 客户端服务器发送HTTP协议请求,请求服务器里的文档资源
  4. 在服务器端,实际上还有复杂的业务逻辑:服务器可能有多台,到底指向哪台服务器处理请求,这需要一个负载平衡设备来平均分配所有用户的请求
  5. 还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;
  6. 当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如:css,js或者图片)时又会发起另外的请求,而这些请求可能会在CDN上,那么CDN服务器又会处理这个用户的请求。
  7. 客户端与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果。

一个 HTTP 事务就是这样实现的,看起来很简单,原理其实是挺负责的。需要注意的是客户机与服务器之间的通信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。

但需要注意的是,从 HTTP 1.1 开始,服务器可以与客户端保持长连接,不一定是请求完成后就断开连接,这取决于服务器的操作。

二. 编译安装nginx, 详细解读常用参数。

由于工作中都用的脚本安装在这就简单描述一下哈
config、make -j cpu make install

常用参数这里都有说明就不一一列举了
马哥架构第1周课程作业

三. 基于nginx完成动静分离部署 lamp。php到后端php-fpm, static/ 在nginx本地。

3.1 配置 nginx 实现反向代理的动静分离

[root@centos8 ~]#vi /apps/nginx/conf/conf.d/pc.conf 
 location / {
   proxy_pass http://10.0.0.28;
   index index.html;
 }
 location ~ \.php$ {
   root /data/php;
   fastcgi_pass   10.0.0.18:9000;
   fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /data/php$fastcgi_script_name;
   fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   include       fastcgi_params;
 } 

3.2 准备后端 httpd 服务器

#在后端服务器10.0.0.28上安装httpd服务
[root@centos8 ~]#dnf -y install httpd
[root@centos8 ~]#systemctl enable --now httpd
[root@centos8 ~]#mkdir /var/www/html/images
[root@centos8 ~]#wget -O /var/www/html/images/magedu.jpg 
http://www.magedu.com/wp-content/uploads/2019/05/2019052306372726.jpg

四. nginx 利用rewrite完成 全栈ssl配置。

hsts浏览器内部就跳转https

[root@centos8 ~]#vim /apps/nginx/conf/conf.d/pc.conf
server {
 listen 80;
 listen 443 ssl;
 ssl_certificate /apps/nginx/conf/conf.d/www.magedu.org.crt;
 ssl_certificate_key /apps/nginx/conf/conf.d/www.magedu.org.key;
 ssl_session_cache shared:sslcache:20m;
 ssl_session_timeout 10m;
 server_name www.magedu.org;
 error_log /apps/nginx/logs/magedu.org_error.log notice;  
 access_log /apps/nginx/logs/magedu.org_access.log main;
 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"
always;
 location / {
   root /data/nginx/html/pc;
   if ( $scheme = http ) {
         rewrite ^/(.*)$ https://www.magedu.org/$1 redirect;                   
                            
   }
 }
[root@centos8 ~]#systemctl restart nginx
[root@centos7 ~]#curl -ikL https://www.magedu.org
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Thu, 08 Oct 2020 15:29:56 GMT
Content-Type: text/html
Content-Length: 7
Last-Modified: Sat, 26 Sep 2020 01:18:32 GMT
Connection: keep-alive
ETag: "5f6e96e8-7"
Strict-Transport-Security: max-age=31536000; includeSubDomains
Accept-Ranges: bytes
pc web

京东一小时内访问网站请求在浏览器直接就跳转,一小时后还是发送http请求到了服务器返回https
马哥架构第1周课程作业

五.(可选)有兴趣,可以完成acme完成自动SSL签发。

参考
https://www.yoyoask.com/?p=9313

六. 通过zabbix监控nginx状态,web网站健康状态。

马哥架构第1周课程作业
马哥架构第1周课程作业

七. 简要描述后期学习的计划。

1.理论方面自己平时记录下老王讲的经验自己再加以总结,并在面试的前一周多加复习
2.实操的话自身经验还是足够的,为了节约时间大部分都一遍过。
3. 面试也准备一些高情商的话术,让面试官对自己看上去更加有眼缘。