# Web 服务器基础知识

# 什么是 Nginx

Nginx(engine x)是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供 IMAP/POP3/SMTP 服务。但是它的 主要功能是反向代理 ,通过配置文件可以实现集群和负载均衡,可以实现热加载

还可以实现静态资源虚拟化,将图片、css 等静态资源进行虚拟化,就可以通过浏览器访问到资源了

# 常见的服务器

  • MS IIS:asp.net

  • Weblogic、Jboss:传统行业 ERP/物流/电信/金融

  • Tomcat、Jetty:J2EE 等 JAVA 项目

  • Apache、Nginx:静态服务、反向代理

  • Netty:高性能服务器编码

    比如可以开发一个聊天室

netcraft 网站 (opens new window),提供了一些对比图,可以看到各个服务器的时长占有率,如下图所示

image-20210404150340567

上图信息可以在 2021年3月Web服务器调查 (opens new window) 中找到,并且里面还包含了一些其他维度的对比信息

# 什么是正向代理?

客户端请求目标服务器之间的一个代理服务器,请求会先经过代理服务器,然后再转发请求到目标服务器,获得内容后最后响应给客户端

比如:在家里访问慕课网,我们的请求实际上会先经过你的移动运营商才会到达慕课网服务器,中间经历了中转

再比如:公司的网络环境下,有些网管会屏蔽百度下载,你发起的请求会先经过代理服务器,它可以控制或则监控你的一些行为的

image-20210404151645228

# 什么是反向代理?

用户请求目标服务器,由代理服务器决定访问哪个 IP

注意区别:

  • 正向代理:代理服务器只是转发用户的请求到用户想要访问的资源
  • 反向代理:代理服务器决定返回哪个服务器的资源给用户

image-20210404152120464

如上图所示,你报名之后,但是要去到哪个班级?不是你能决定的

通过反向代理我们可以实现很多功能,比如反向代理 路由

image-20210404152554826

上述中的域名,在 Nginx 中是用虚拟主机实现的