Skip to content

Ngnix学习与实践

quicker@yi edited this page Jun 14, 2017 · 4 revisions

最近由于原测试服务器下线,所以需要将项目迁移到新申请的机器,新的机器需要重新安装配置环境。自己作为前端小白,记录一下ngnix安装配置的过程,已备以后参考!

要使用某个东西,先要了解它

关于Ngnix

  • Nginx是什么

    Nginx(engine x)是一种静态网页服务器,可以反向代理HTTP、HTPPS、SMTP、POP3、IMAP的协议连接,以及一个负载均衡器和一个HTTP缓存,即它与Tomcat动态Web服务器的区别在于,它只能返回纯静态文件,也就是实际上存在于服务器的文件,所以一般ngnix扮演者另一个角色,这也是它的另一个功能特点反向代理服务器,这样它成了与真正的动态服务器(eg:Tomcat等)链接的桥梁

  • Nginx的功能

    根据上面介绍,可以总结出ngnix有下面几个功能:

    1)web服务器

    ngnix是基于事件驱动的(与Node.js一样),所以能够处理高并发访问,且低耗内存

    2)反向代理服务器

    什么是代理,代理就是中介,但是代理分为两种,一种是正向代理,一种是反向代理,下面简单的说明一下两者的却别!

    正向代理:我们经常所说的翻墙就是一个典型的例子,当A无法直接访问到C,但是A可以直接访问到B,而B可以访问到C,所以B此时就成了A访问C的代理了。但是原始服务器C对于A来说并不是透明的,A一直知道C的存在,而且访问的也是C的地址,所以必须在A端进行一些设置才能进行正向代理

    反向代理:反向代理是相对于正向代理来说的,它主要是为了保护原始服务器。还是上面的例子A <-> proxy B <-> C,但是此时C对于A来说是透明的,A并不知道C的存在,A访问的地址从始至终都是B,一般来讲C会设置防火墙,B成为了允许访问C的唯一入口,这就起到了一种隐藏保护C的作用,而B要做的就是解析A的请求,发给C,然后获取C的响应,返回给A。因为此时B能拦截所有的请求,所以B可以做一些负载均衡的工作,来分发流量。

    3)邮件服务器&其他

    这里就不深入讨论了,自己也不是特别熟悉

  • Nginx配置

    一切基于配置

    Nginx配置的配置项非常多,它所有的功能都是基于配置文件的,除了本身支持的配置之外,还可以下载第三方模块(也可以自己编写模块)要查看ngnix详细的配置,可以参考这里,下面主要讲一下几个主要功能的配置(简单): 1)压缩模块:设置是否开启gzip压缩,文档查看这里

    # 是否开启
    gzip on|off;
    # gzip on => Reponse Headers: Content-Encodeing: gzip;
    
    # 还有许多其他高级配置项,可以参考文档

    2)缓存模块:设置具体文件的缓存策略,可以参考这里

    location /regexp/# 此处设置正则匹配或者绝对uri {
      expires 30s; # 缓存时间
      # ....
    } # => Reponse Headers: Cache-Control:max-age=30

    3)负载均衡:一般反向代理服务器都会设置负载均衡任务

    # 设置反向代理
    location / {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_set_header X-NginX-Proxy true;
      # 代理的地址
      proxy_pass http://any-name; # 下面的负载均衡模块名
      proxy_redirect off;
    }    
    
    # 设置负载均衡 upstram 模块
    upstream any-name {
       server 127.0.0.1:3000 weight=1; # weight表示权重,数值越大,表示被分配到这个server的几率越大
       ....
    }    

课外阅读

Clone this wiki locally