问题一:apache和nginx的区别,优缺点,如何选择
区别,优缺点
- 性能:Nginx和Apache在处理静态文件方面都很出色,但Nginx在处理高并发请求方面表现更为优秀。这是因为Nginx可以同时处理大量的连接。相比之下,Apache在处理大量请求时可能会出现性能瓶颈。
- 资源占用:Nginx相比Apache更加轻量级,对系统资源的占用更少。这意味着在相同的硬件条件下,Nginx可以处理更多的并发请求,提供更高的吞吐量。
- 可扩展性:Nginx的设计理念使其更加模块化,这意味着用户可以根据自己的需求添加或删除模块,从而增强其功能或提高性能。相比之下,Apache的模块化程度较低,虽然也有一些可用的模块,但总体来说不如Nginx灵活。
- 配置复杂性:Nginx的配置相对简单,尤其在处理反向代理、负载均衡等方面。而Apache的配置则相对复杂一些,需要更多的时间和经验来进行优化。
- 社区支持:Apache作为开源软件的代表,拥有庞大的用户基础和活跃的开发者社区。这意味着当你遇到问题时,可以很容易地在网上找到解决方案或得到社区的帮助。而Nginx虽然也有一个庞大的用户基础,但其开发者社区相对较小。
选择:
网站或应用需要处理大量的并发请求,其次,如果你的系统资源有限,或者你需要更高的吞吐量,另外,如果你需要使用反向代理或负载均衡功能,Nginx的配置更加简单易用。
如果你的项目依赖于特定的Apache模块,或者你更倾向于从活跃的开发者社区中获取支持,那么Apache可能更适合你。
虽然Nginx和Apache各有优缺点,但它们也可以一起使用。你可以使用Nginx作为反向代理服务器,将动态请求转发给后端的Apache服务器处理。这样既可以利用Nginx的高并发性能和负载均衡能力,也可以利用Apache的模块化和社区支持。
问题二:请求报文和响应报文头部常见的属性
请求头
请求报文主要由请求行、请求头、空行、请求体构成。
请求头包含以下几个:
Host:请求的服务器的域名。
Accept:客户端能够处理的媒体类型。
Accept-Encoding:客户端能够解码的内容编码。
Authorization:用于认证的凭证信息,比如token数据。
Content-Length:请求体的长度。
Content-Type:请求体的媒体类型。
Cookie:存储在客户端的cookie数据。
If-None-Match:资源的ETag值,用于缓存控制。
Connection:管理连接的选项,如 keep-alive。
响应头
响应报文通常包含状态行、响应头、空行、响应体。
响应头包含以下几个:
Content-Type:指定响应主体的媒体类型。
Content-Length:指定响应主体的长度(字节数)。
Server:指定服务器的信息。
Expires: 响应的过期时间,之后内容被认为是过时的。
ETag: 响应体的实体标签,用于缓存和条件请求。
Last-Modified: 资源最后被修改的日期和时间。
Location:在重定向时指定新的资源位置。
Set-Cookie:在响应中设置Cookie。
Access-Control-Allow-Origin: 跨源资源共享(CORS)策略,指示哪些域可以访问资源。
问题三:静态缓存资源如何自动更新
配置服务器缓存策略
利用CDN的缓存刷新功能
等等
问题四:什么是长连接,有什么作用
长连接(long connnection),指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。 短连接(short connnection),是相对于长连接而言的概念,指的是在数据传送过程中,只在需要发送数据时才去建立一个连接,数据发送完成后则断开此连接,即每次连接只完成一项业务的发送。
长连接 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况
问题五:apache的mpm多路处理模块
它将Apache的结构能够模块化,把核心的任务处理作为一个可插拔的模块来运行
他是Apache中唯一一个系统层的模块
主要职责:
- 根据Apache运行的操作系统平台来优化Apache。
- 提高Apache的效率。
- 保证Apache的安全。
问题六:nginx如何实现高并发
异步
,非阻塞
,使用了epoll
和大量的底层代码优化
。
问题七:为什么 Nginx 不使用多线程?
Apache
: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会耗光服务器资源。
Nginx
: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发。