Tech Talk 让技术发出声音
RSS

Web 服务器-Nginx

什么是Web服务器

Web简介

WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。世界上第一台Web服务器诞生于1990年,最先被部署在欧洲原子核研究委员会(CERN,European Organization for Nuclear Research)的。起初其被命名为“CERN httpd”,也被称为“W3C httpd”。

Web发展简史

Web服务器

Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

Nginx

什么是Nginx

Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。 Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。

Nginx能做什么

  1. 反向代理
  2. 负载均衡
  3. HTTP服务器
  4. 正向代理

反向代理

定义

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。

nginx实现
server {
        listen       80;
        server_name  www.ttalk.im;
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host:$server_port;
        }
    }

这里面就是将本站的80端口代理到同一台服务器的8080端口上。

特点

Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走Web应用服务器。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。

负载均衡

定义

负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web应用服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。

nginx实现
  upstream inner {
        server 192.168.1.2:8080;
        server 192.168.1.3:8080;
    }
    server {
        listen       80;
        server_name  www.ttalk.im;
        location / {
            proxy_pass http://inner;
            proxy_set_header Host $host:$server_port;
        }
    }

这里面就是将本站的80端口代理到两台内网服务器的8080端口上,并且均匀分请求。

特点

HTTP服务器

nginx实现
    server {
        listen       80;
        server_name  static.ttalk.im;
        location / {
               root  /var/www/ttalk/static;
               index  index.html;
           }
    }

这段配置,让nginx直接处理本站的所有静态资源文件。

特点

Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,同时现在也很流行动静分离,就可以通过Nginx来实现。

正向代理

定义

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

nginx实现
    resolver 8.8.8.8;
    server {
        resolver_timeout 5s;
        listen 80;
        location / {
            proxy_pass http://$host$request_uri;
        }
    }
特点

也许是本人没有特别深入用这个功能的关系,感觉nginx这个功能实现的比较弱,并不推荐使用。

总结

Nginx和Apache,IIS等相比,是一款较新的Web服务器,但是Nginx凭借着高稳定性、功能强、示例配置文件和低系统资源的消耗让它后来居上。 在我们不需要实现太多复杂的功能,或者有特定需要的场景下,Nginx都是一个非常不错的选择。 当然Nginx也有各种各样的插件和衍生版本,例如著名的OpenResty