Nginx功能初探密

Nginx初探密

  Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。nginx经常存储静态资源,实现请求转发和负载均衡的作用,可以与Tomcat搭配使用,因为其高效率和低CPU利用率被广泛使用到站点和软件工程当中
       nginx往往是作为反向代理服务器来实现其功能的,何为反向代理服务器,这里我们要先明白正向代理服务器,以及他们的区别之处。

  • 正向代理服务器

    在一个局域网内多台主机发送请求至一个代理服务器,这个服务器便将请求发往对应的一台终端服务器,然后终端服务器返回给代理服务器请求的内容,代理服务器转发至局域网内主机。在终端服务器看来,所有的请求都是由代理服务器发来的请求,他并不知道是哪一台主机的请求,这样可以隐藏实际的客户端,这样的代理服务器就叫做正向代理服务器

  • 反向代理服务器

    同样假设一台客户端主机发送请求至一台代理服务器,这台服务器的功能主要是根据请求来转发至对应的终端服务器,而客户端并不知道代理服务器实际上发送给了谁,以他的视角来看,它仅和代理服务器在通信,这样的代理就叫反向代理,好处是可以保护内部的服务器信息,免受直接攻击

       在实际生产环境中,nginx主要用来做转发和负载均衡,他可以控制流量往哪一台服务器上走,走多少,都是可以控制的,流量的大小就是负载,另外一些不常变动的静态页面都保存在nginx服务器上,这是避免服务请求响应的性能损耗。那么如何实现负载均衡呢,主要是依靠的upstream模块来实现的,在该模块内可以指定服务器地址和端口号,并且给予不同的权重,这样每当流量进来,可以根据upstream的设置分流权重来均衡负载,例如:

    upstream backend{
        server 192.168.1.2:80 weight=1;
        server 192.168.1.3:80 weight=2;
    }

weight表示权重,值越大越有可能分到流量
另一个重要的配置就是我们通常会设置虚拟主机,这样我们就能在一个nginx服务器上运行多个网站,不用每个网站配一个nginx服务器,比较精简的一个虚拟主机:

    server{
         listen 80;
         server_name 192.168.1.100;
         location / {
         #反向代理的地址
         proxy_pass http://backend;
         }
    }

listen为监听的端口,server_name为虚拟主机的域名或IP地址,location作用是根据用户请求的URI来执行不同的应用一般的格式为:

    location [modifier] URI{}

中间部分可以指定任意的正则表达式来进行匹配用户的请求,再指定到其后的URI去,proxy_pass为跳转的地址或域名,并且要与upstream后的名称相对应,这样才会去找到其upstream的配置从而实现负载均衡
将写好的upstream和vhost程序以include方式加进nginx.conf文件中才能发挥作用,nginx.conf文件中也包含了关于HTTP请求的相关一些配置,比如缓冲区,日志,超时处理fastcgi等,还包括event时间模型,请查阅针对性的文章学习。

你可能感兴趣的:(Nginx)