一. 画图解释一次web请求的过程。涉及tcp/ip, dns, nginx,wsgi。
简化版流程
1 DNS
2 CDN
3 TCP
4 Web服务器处理
1)建立连接
2)接收清求
3)处理请求 GET、POST等方法
4)获取资源
5)构建响应报文
6)发送响应
7)记录日志
5 浏览器接收响应报文,进行页面渲染
详细版
- 浏览器通过DNS把域名解析成对应的IP地址
- 根据这个IP地址在互联网上找到对应的服务器,建立Socket连接
- 客户端服务器发送HTTP协议请求,请求服务器里的文档资源
- 在服务器端,实际上还有复杂的业务逻辑:服务器可能有多台,到底指向哪台服务器处理请求,这需要一个负载平衡设备来平均分配所有用户的请求
- 还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;
- 当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如:css,js或者图片)时又会发起另外的请求,而这些请求可能会在CDN上,那么CDN服务器又会处理这个用户的请求。
- 客户端与服务器断开。由客户端解释HTML文档,在客户端屏幕上渲染图形结果。
一个 HTTP 事务就是这样实现的,看起来很简单,原理其实是挺负责的。需要注意的是客户机与服务器之间的通信是非持久连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。
但需要注意的是,从 HTTP 1.1 开始,服务器可以与客户端保持长连接,不一定是请求完成后就断开连接,这取决于服务器的操作。
二. 编译安装nginx, 详细解读常用参数。
由于工作中都用的脚本安装在这就简单描述一下哈
config、make -j cpu make install
常用参数这里都有说明就不一一列举了
三. 基于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
五.(可选)有兴趣,可以完成acme完成自动SSL签发。
参考
https://www.yoyoask.com/?p=9313
六. 通过zabbix监控nginx状态,web网站健康状态。
七. 简要描述后期学习的计划。
1.理论方面自己平时记录下老王讲的经验自己再加以总结,并在面试的前一周多加复习
2.实操的话自身经验还是足够的,为了节约时间大部分都一遍过。
3. 面试也准备一些高情商的话术,让面试官对自己看上去更加有眼缘。
转载:https://blog.csdn.net/qq_46229380/article/details/128591492
查看评论