• Nginx初探


     

    2016-08-23 王维 王女士的IT之旅

    引言

    在项目质量保障过程中,尤其是在测试环境的搭建和维护时,经常要与nginx打交道,比如短链接、api的ACL控制等配置都与nginx相关。笔者从研究项目的nginx配置出发,然后在本地搭建了nginx服务,开展了进一步探索,将学习的过程记录于此,一是对自己知识的梳理,二是希望对有缘人有点帮助。

    正文

    nginx是一个web网站常用的高性能http和反向代理服务器,其具有较好的并发能力,被网易、百度、腾讯、新浪等网站广泛使用。

    1.首先弄清楚正向代理和反向代理

    正向代理:代理客户端,替客户端收发请求,使真实的客户端对服务器不可见。如图所示,proxy和client同属于一个网络,对server透明


    反向代理:代理服务器,提服务器收发请求,使真实的服务器对客户端不可见。如图所示,proxy和server同属于一个网络,对client透明



    实际上proxy都是代为收发请求和响应,只是在结构上左右换了下,所以一个叫正向代理,另一个叫反向代理。

    2.nginx的反向代理原理

    如下图所示:nginx作为反向代理服务器接收来自客户端的http请求,然后将请求转发给内部网络的web服务器,同时接收来自web服务器的response结果,并返回给客户端。此时nginx代理服务器对外展现为一个服务器。

    3.nginx的反向代理的作用

    (1)负载均衡。nginx可以将来自客户端的请求均衡的分发到web服务器集群中的不同机器上进行处理,平衡集群中各个服务器的压力。这对于大访问量的web网站来说,是需要的。
    (2)安全保障。客户端直接访问的不是提供内容的web服务器,为保护网站服务器提供了一层屏障,有利于保护网站的安全。
    (3)加速web请求。nginx可以配置缓存,存储真实web服务器的某些资源和响应,减轻真实服务器的压力,同时加速web请求

    4.本地搭建nginx服务

    工作机器是windows环境:
    Step1: nginx官网下载nginx压缩包。
    Step2: 进行解压到nginx目录
    Step3:启动nginx,命令:
    cd nginx start nginx.exe 启动成功标志:在浏览器输入127.0.0.1 会出现nginx的欢迎页面
    Step4:配置nginx的conf文件
    nginx.conf里面有很多配置参数,主要有:工作模式、最大连接数配置(events)和http服务器设置
    (1)将baidu的html页面保存至nginx/html的新建文件夹nginxFiles下,然后进行如下的配置:
    server{    

    listen 80;      

    server_name localhost;    

    location / {                 root html/nginxFiles;  

                                  index baidu.html;      

                }

    }
    以上配置代表:将域名localhost,端口80的“/”下请求,定位到本地root的位置,默认的首页是baidu.html。配置后重启nginx,在浏览器中再次输入127.0.0.1就会自动出现baidu的页面。
    (2)配置负载均衡 首先在http中配置负载均衡机器列表,如下所示:每个server代表一台机器,后面加上ip地址:端口,weight代表权重,权重越大,则nginx把客户端请求转发给他的可能性就越大。
    upstream vivi{    

    server 127.0.0.1:8050  weight=1;        

    server 127.0.0.1:8060  weight=2;

    }
    然后配置server中的location,如下:表示拦截域名后带/所有请求,转发至vivi中的机器进行处理,实现负载均衡。proxy_pass表示请求转向自定义服务器列表。项目中的短链接服务,就是用proxy_pass请求转向短链接服务器即可。
    location / {

        proxy_pass http://vivi;

    }
    Step5:修改配置后,重启nginx服务生效。常用的nginx命令
    start nginx.exe  #启动

    nginx nginx -s stop  #关闭

    nginx nginx -s reload #重启nginx

    5.nginx支持多域名配置

    可以在一个文件中配置多个server,如下:
    server{      listen 80;    

     server_name www.vivi.com; #绑定域名  

     index index.htm index.html index.php #默认文件    

     root /home/www/vivi.com #网站根目录            

     include location.conf #调用其他规则,也可去除 }

    server{    

    listen 81;    

    server_name www.test.com; #绑定域名  

    index index.htm index.html index.php #默认文件  

    root        /home/www/msn.web126.com #网站根目录    

    include location.conf #调用其他规则,也可去除

    }


    也可以在一个server中的server_name后面配置多个域名,如:
    server{      

      listen 80;  

      server_name www.vivi.vom www.test.com

    }

    6.nginx的域名匹配顺序

    (1)准确的server_name匹配,如下配置:只精准vivi.info 和 www.vivi.info两个域名:

    server{  listen 80;

             server_name vivi.info www.vivi.info;  

             ... }

    (2)以通配符开始的字符串,如下配置:能匹配以vivi.info结尾的所有域名

    server{ listen 80;

             server_name *.vivi.info;

           ... }

    (3)以通配符结束的字符串,如下配置:能匹配以www开头的所有域名

    server{ listen 80;

            server_name www.*; ...

         }

    (4)匹配正则表达式,如下配置:能匹配以vivi.org结尾的所有域名

    server{ listen 80;

            server_name vivi.org$; ...

            }

    结语

    本文只根据项目的需要,研究了项目中常用的配置,为了提高nginx性能,还有很多高级的配置参数,可以根据需要进行深入学习
    推荐学习资料:nginx官网文档

  • 相关阅读:
    接口与实现分离
    C++的explicit关键字
    C++的类型转换
    使用catch做单元测试简介
    C++可调用对象与函数表
    在sublime中使用cppcheck
    你需要的代码静态检查
    构造析构与拷贝赋值那些事
    c++的关联容器入门(map and set)
    【致敬程序猿】
  • 原文地址:https://www.cnblogs.com/zengkefu/p/5814793.html
Copyright © 2020-2023  润新知