文章

解释一下什么是 Nginx

解释一下什么是 Nginx

请解释一下什么是 Nginx ?

Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。

目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。

Nginx 的主要功能如下:

  • 作为 http server (代替 Apache ,对 PHP 需要 FastCGI 处理器支持)

FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求扔给某些语言或框架处理。

  • 反向代理服务器
  • 实现负载均衡
  • 虚拟主机

🦅 fastcgi 与 cgi 的区别?

1)cgi

web 服务器会根据请求的内容,然后会 fork 一个新进程来运行外部 c 程序(或 perl 脚本…), 这个进程会把处理完的数据返回给 web 服务器,最后 web 服务器把内容发送给用户,刚才 fork 的进程也随之退出。

如果下次用户还请求改动态脚本,那么 web 服务器又再次 fork 一个新进程,周而复始的进行。

2)fastcgi

web 服务器收到一个请求时,他不会重新 fork 一个进程(因为这个进程在 web 服务器启动时就开启了,而且不会退出),web 服务器直接把内容传递给这个进程(进程间通信,但 fastcgi 使用了别的方式,tcp 方式通信),这个进程收到请求后进行处理,把结果返回给 web 服务器,最后自己接着等待下一个请求的到来,而不是退出。


🚀 综上,差别在于是否重复 fork 进程,处理请求。

关于 Nginx 和 fastcgi 是如何运行的,可以看看 《Nginx + FastCGI运行原理》

同样,关于 cgi 可能也会存在 《php 面试题五之 nginx 如何调用 php 和 php-fpm 的作用和工作原理》 问题。

本文由作者按照 CC BY 4.0 进行授权