
题外话:Apache、nginx、Lighttpd、IIS、Boa、Jigsaw
1.Apache
Apache(Apache HTTP Server)是目前广泛流行的Web服务器软件,具有开放源代码、跨平台、安全稳定等特点。Apache是伴随互联网的兴起共同成长的,经过多年的技术沉淀和积累,已经非常成熟和稳定,具备了大量的功能模块和扩展。但由于Apache在设计之初对性能和资源的消耗没有过多的关注,导致在应对高并发的业务场景时,被一些轻量级的高性能Web服务器赶超。
2.Lighttpd
相对于Apache服务器,由德国人发起的轻量级开源Web服务器软件Lighttpd,不仅实现了Apache的常用功能,同时还保持了轻量级的优势,具有低内存开销、低CPU占用率、性能高以及模块丰富等特点。目标是专门针对高性能网站提供一个安全、快速、兼容性强且配置灵活的Web服务器环境。
3.Nginx
Nginx是一个轻量级开源Web服务器软件,可以作为反向代理、负载均衡与缓存服务器使用。Nginx和Lighttpd都是为高并发网站的应用场景而设计的。随着技术发展和业务需要,Nginx逐渐受到关注,在国内如百度、淘宝、腾讯、新浪、网易等网站都开始使用Nginx来满足一些高并发访问的需求。
4.IIS
IIS(Internet Information Services互联网信息服务)是Microsoft(微软)公司的Web服务器产品,运行在WindowsServer平台,具有图形界面管理工具。 IIS是目前被广泛采用的Web服务器软件之一,在全球占有相当大的市场份额。 但作为付费软件,需要支付一定的软件成本。其自身也有不少缺点,远不如上述几种web服务软件好用。
| Web服务器 | nginx | apache | Lighttpd |
|---|---|---|---|
| 反向代理 | 非常好 | 好 | 一般 |
| Rewrite规则 | 非常好 | 好 | 一般 |
| FastCGI | 好 | 差 | 非常好 |
| 热部署 | 支持 | 不支持 | 不支持 |
| 系统压力比较 | 很小 | 小 | 很大 |
| 稳定性 | 非常好 | 好 | 一般 |
| 安全性 | 一般 | 好 | 一般 |
| 技术资料 | 很少 | 非常多 | 一般 |
| 静态文件处理 | 非常好 | 一般 | 好 |
| 虚拟主机 | 支持 | 支持 | 支持 |
| 内存消耗 | 非常小 | 很大 | 非常小 |
FastCGI https://www.jianshu.com/p/565217337247
一、nginx介绍
nginx 是使用c语言开发的高性能的web和反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试nginx能够支撑五万并发数,实际生产环境中也能达到2-4万,并且cpu、内存等资源消耗非常低,运行非常稳定
二、运用场景
静态资源服务-通过本地文件系统提供服务
动静分离-为了加快网站的解析速度,可以把动态页面和静态请求分开。分离资源减少不必要的请求消耗,减少请求延迟,加快解析速度,降低原来单个服务器的压力。
![]() |
![]() |
![]() |
|---|---|---|
负载均衡-当一台服务器的单位时间内的访问量越大时,服务器压力就越大,大到超过自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力(我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况),实现方式(轮询、weight权重、ip_hash、fair、url_hash)
轮询![]() |
权重![]() |
|---|---|
ip_hash![]() |
Fair-依赖nginx-upstream-fair![]() |
url_hash![]() |
反向代理服务-直接请求的服务器是代理服务器,以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,得到的结果返回给客户端(隐藏了真实服务器)
正向代理服务-正常流程是客户端直接向目标服务器发送请求并获取内容,正向代理是客户端向代理服务器发送请求,并指定目标服务器,然后由代理服务器、目标服务器通信。转交请求并获得内容,再返回客户端(客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端,隐藏了真实客户端)
API服务-nginx采用模块化设计,一些第三方模块可以直接读写数据库,所以nginx可以通过安装第三方模块来操作数据库,有lua模块提供这样的操作。 (openresty)https://blog.csdn.net/forezp/article/details/78616698
三、安装
yum list | grep nginx
yum install nginx
四、常用指令
Ø nginx -s reload 重新加载配置文件
Ø nginx -s reopen 重启nginx
Ø nginx -s stop 快速关闭
Ø nginx -s quit 进程处理完成后关闭
Ø nginx -t 检查nginx配置与法是否正确
Ø ps -ef | grep nginx 查看nginx进程
Ø Kill -9 1012 强制关闭进程
五、配置说明

conf.d 子配置文件夹
nginx.conf 主配置文件;
fastcgi.conf、fastcgi.conf.default、fastcgi_params、 fastcgi_params.default fastCGI相关参数
nginx.conf文件说明:

location匹配规则:
location = /uri #精确匹配,优先级最高
location ^~ /uri #普通字符串匹配,不支持正则表达式,当匹配成功后停止其他location匹配,优先级高于正则
location ~ #区分大小写的正则匹配
location ~* #不区分大小写的正则匹配
location /uri #前缀匹配
location / #通用匹配
六、跨域
l 反向代理解决跨域
反向代理还可以设置其他信息:
Ø proxy_set_header 更改来自客户端的请求头信息
Ø proxy_connect_timeout nginx与后台代理建立连接的超时时间
Ø proxy_read_timeout nginx向后端服务器发出read请求等待的超时时间
Ø proxy_send_timeout nginx向后端服务器发出write请求等待的超时时间
Ø proxy_redirect 修改后端服务器返回的响应头中的Location和Refresh
l 配置 header 解决跨域
七、配置 gzip
Ø gzip_types 压缩文件类型
Ø gzip_static nginx检查请求静态文件是否以gz 结尾,如果有则直接返回该 .gz 文件内容
Ø gzip_proxied nginx做为反向代理时启用,用于设置启用或禁用从代理服务器上收到相应内容 gzip 压缩
Ø gzip_buffers 处理请求压缩的缓冲区数量和大小(一般使用默认值),上图表示:一个系统内存页为8k,申请16倍空间
Ø gzip_comp_level gzip压缩级别(1-9),级别越底压缩速度越快文件压缩比越小(级别越高,对处理性能要求更高)
Ø gzip_min_length 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。
Ø gzip_http_version 默认 1.1,启用 gzip 所需的 HTTP 最低版本
官网配置信息http://nginx.org/en/docs/http/ngx_http_gzip_module.html
八、适配pc、移动($http_user_agent)
九、https配置


ssl_certificate 证书文件 ssl_certificate_key 秘钥文件 ssl_protocols ssl协议
ssl_ciphers 加密算法
ssl_prefer_server_ciphers on时,在使用SSLv3和TLS协议时,服务器加密算法将优于客户端加密算法
http://nginx.org/en/docs/http/ngx_http_ssl_module.html
十、https、http同时支持








