大家好,关于鹅厂面试真题分享:深入浅出的Nginx解析很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
下班后想了想,发现自己在日常生活中潜移默化地使用了很多nginx的能力,但是在面试的时候并没有去实现相应的概念。
面谈nginx核心能力nginx 是一个历史悠久的Web 服务器。 nginx的以下基本能力大家都熟悉了。看看吧。面试官不会对此进行测试。
高并发连接数: 官方表示单节点支持5万个并发连接,实际生产环境可以承受2万到3万个并发连接。
内存消耗少:3万并发连接下,启动10个nginx进程仅消耗150M内存(15M10=150M)
配置简单
低成本: 开源免费
1. 正向、反向代理
正向代理和反向代理的区别在于代理的方向,但都是代理处理HTTP请求/响应。代理服务器的用途:堡垒主机/隔离内网:内网客户端无法访问外网,需要设置堡垒主机来隐藏内网工作服务器。代理服务器的附加功能:对流量进行操作、使用缓存或压缩来提高性能、防御攻击和过滤信息2. 负载均衡负载均衡一般会伴随着反向代理,具有分发流量、透明代理、代理等作用增强容错能力。
http{upstreammyapp1{serversrv1.example.com;serversrv2.example.com;serversrv3.example.com;}server{listen80;location/{proxy_passhttp://myapp1;}}} 早期我们的核心产品部署在两台windows Sever IIS上。部署了nginx用于负载均衡。
显然,这里有一个关于【负载均衡策略】的知识点。
round-robin 顾名思义:轮询最少连接:下一个请求将发送到活动链接最小的服务器ip-hash:根据客户端的IP 地址和哈希函数http://nginx 确定将请求发送到哪台服务器。 org/en/docs/http/load_balancing.html扩展技能点:
[服务发现]:在容器/K8S环境中,服务地址由集群系统动态分配,一般内置服务发现能力。 docker-compose/K8s 中定义的服务名称代表整个服务。
[会话亲和力]:也称为“粘性会话”,它确保在有状态应用程序中,来自同一客户端的请求被发送到后端服务器。
3. 动静分离动静分离与当前热门的前后端分离概念密切相关。
前端可以自行开发和测试,可以使用nginx组成静态资源服务器。后端服务仅用作附加资源。
以下示例显示静态资源位于/usr/share/nginx/html,动态资源路径包含api或swagger。
uploadeap_website{servereapwebsite;}server{listen80;location/{#静态资源root/usr/share/nginx/html;indexindex.htmlindex.htm;try_files$uri/index.html;}location^~/api/{#动态资源proxy_passhttp://eap_website/api/;}location^~/swagger/{#动态资源proxy_passhttp://eap_website/swagger/;}} 扩展技能点
以上流程也是《现代十二要素应用方法论》推荐的第四点。从这个系统来看,后端沦为API开发是一个遗憾。 这里有《有关在容器生成阶段动态插入api基地址的妙招》,对于动静分离的容器化很有帮助。
实用功能通过端口支持同一域名下多个webapp绑定Https证书1、2点一起体现:一个域名绑定到443和8080端口两个https站点上游receiver_server{serverreceiver:80;}upstreamapp_server{serverapp:80;}服务器{listen443sslhttp2;server_nameeqid.gridsum.com;ssl_certificate/conf。 crt/live/gridsum.com.crt;ssl_certificate_key/conf. crt/live/gridsum.com.key;location/{proxy_passhttp://receiver_server/;}}server{listen8080sslhttp2;server_nameeqid.gridsum.com:8080;ssl_certificate/conf.crt/live/gridsum.com.crt;ssl_certificate_key/conf.crt/live/gridsum.com.key;location/{proxy_passhttp://app_server/;}} 支持rewrite重写规则:可以根据不同的域名和URL将http请求分发到不同的后端应用服务器节点。
关键指令:max_fails、fail_timeout
uploadbackend{serverbackend1.example.comweight=5;server127.0.0.1:8080max_fails=3fail_timeout=30s;serverunix:/tmp/backend3;serverbackup1.example.combackup;}节省带宽: 支持gzip压缩
解决跨域问题反向代理添加CORS响应头
第5点和第6点一起体现:前后端分离项目、跨域请求添加CORS响应头、静态资源启用gzip压缩。
位置/{gzipon;gzip_typesapplication/javascripttext/cssimage/jpeg;root/usr/share/nginx/html;indexindex.htmlindex.htm;try_files$uri/index.html;add_header'Access-Control-Allow-Origin''*' ;add_header'Access-Control-Allow-Methods''GET、POST、OPTIONS、PUT、DELETE';add_header'Access-Control-Allow-Headers''内容类型';add_header'Access-Control-Allow-Credentials'' true';}要进入大工厂,技术栈必须扩展到舒适区之外。大厂的开发人员大多都具备多种技能,可以随时使用。
只有扎实的基础知识,才能更快掌握并解锁高难度姿势。
好了,文章到此结束,希望可以帮助到大家。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6736.html
用户评论
突然想起来我当年面试也问过Nginx啊,还挺难忘的。
有17位网友表示赞同!
这篇文章给我的感觉是Goose Factory的面试难度其实挺高的吧。
有15位网友表示赞同!
分享一下你的面试经历,对我们这些准备就职的人很有帮助!
有19位网友表示赞同!
群面很考验沟通能力和团队合作能力啊!
有14位网友表示赞同!
Nginx真是一项非常重要的技术了,感觉学习起来难度都不小啊。
有20位网友表示赞同!
这篇文章让我对鹅厂的面试流程有了更清晰的认识。
有10位网友表示赞同!
面试官应该都是资深工程师吧,能答上来确实很不容易!
有14位网友表示赞同!
希望能看到更多详细的面试经历分享,例如具体问了什么题。
有18位网友表示赞同!
感觉作者的技术实力真的很强啊,对NGINX的理解那么透彻。
有17位网友表示赞同!
原来鹅厂面试还需要回顾Nginx底层实现?太厉害了!
有18位网友表示赞同!
准备面试的朋友可以多多学习Nginx相关的知识呢!
有19位网友表示赞同!
感觉群面形式还挺考验心态,要保持冷静才能回答清楚啊。
有20位网友表示赞同!
羡慕作者能成功通过鹅厂的面试,希望我也有机会被录用。
有14位网友表示赞同!
鹅厂的工作环境应该很优秀吧,技术氛围肯定很好!
有14位网友表示赞同!
这种Nginx回忆录的文章很有收藏价值,以后可能会用到。
有9位网友表示赞同!
作者分享的经验真的很宝贵,可以帮助很多想要进入科技行业的年轻人。
有16位网友表示赞同!
文章写得非常详细生动,仿佛现场观看面试过程一样!
有11位网友表示赞同!
希望看到更多技术方面的文章分享,学习一下你们的先进经验!
有9位网友表示赞同!
Goose Factory的面试竞争应该很激烈吧,想要进去确实需要好好准备!
有16位网友表示赞同!
感觉鹅厂的技术实力真的很强大啊,值得我好好学习参考!
有11位网友表示赞同!