Nginx

简介:  Nginx (engine x) 是一个高性能的http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

 Nginx (engine x) 是一个高性能的http和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。


Nginx是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。


安装Nginx:


  Nginx还需要依赖pure,zlib,openssl,


  解压文件后进入目录启动 ./configure  , 然后安装 : make && make install


  nginx会在 usr/local/下生成一个nginx文件夹,进入后有一个sbin,里面就是nginx的启动文件 , 通过./nginx就能启动


nginx操作的常用命令


       1.需要进入/usr/local/sbin下


       查看版本号:./nginx -v


        启动nginx:   ./nginx     查看端口情况 ps -ef | grep nginx


        关闭nginx:      ./nginx -s stop


        修改配置文件后重加载:./nginx -s reload


配置文件


   位置:usr/local/nginx/conf/nginx.conf


   组成部分:1>全局块:设置一些影响nginx服务整体运行的配置指令 , 如worker_process,值越大,处理并发量越多


                      2>events块:配置服务器与有湖网络连接部分,如worker_connections 1024 , 支持最大连接数


                      3>http块:配置最频繁的部分,反向代理,负载哦,动静又分为两部分:


              1,server块 : listen 80 :监听端口,


                                               2,location块:


配置反向代理


  使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,设置nginx的监听端口为9001


  实现效果:


      访问http://127.0.0.1:9001/edu/  , 跳到127.0.0.1:8080中 


      访问http://127.0.0.1:9001/vod/ , 跳转到127.0.0.1:8081中


  准备工作:


      两个tomcat服务器,一个端口为8080 , 一个为8081 ,

 

      在webapps 下创建两个文件夹edu(8080.html),vod(8081.html),


      在nginx.conf中配置


        1,监听端口:listen:9001


        2,    server_name: ip地址(我这里用本地127.0.0.1)


        3 , 配置转发路径:   


server {
        listen       9001;
        server_name  127.0.0.1;
        location ~/edu/ {
            proxy_pass http://127.0.0.1:8080
        }
    location ~/vod/ {
            proxy_pass http://127.0.0.1:8081
        }
    }= : 用于不含正则表达式的url,要求请求字符串与url严格匹配,~ :用于表示url包含正则表达式,区分大小写~* :不区分大小写


windows系统访问linux系统中的Nginx,默认不能访问,因为防火墙问题


  解决办法:1.关闭防火墙,2.开放访问的端口


  命令:


    查看开放的端口:firewall-cmd --list-all


    设置开放端口:firewall-cmd --add-service=http --permanent


            firewall-cmd --add-port=端口号/tcp --permanent


    重启防火墙:firewall-cmd --reload


    结果:




配置负载均衡      


  通过增加服务器的数量,然后将请求分发到各个服务器上


   实现效果:浏览器输入 http://127.0.0.1/edu/edu.html ,nginx将请求均衡到8080和8081


   准备工作:两台tomcat服务器,一台8080,一台8081


           在两个tomcat的webapps目录中创建edu文件,在edu下创建edu.html文件


  nginx.conf配置 


upstream myserver { //myserver为服务名,自己指定
    server 127.0.0.1:8080; 需要负载到的服务器列表
    server 127.0.0.1:8081;
    }
    server {
        listen       80; //nginx监听端口
        server_name  127.0.0.1; 
        location / {
          proxy_pass http://myserver;   //加上自己定义的服务名
            root   html;
            index  index.html index.htm;
        }


     测试结果:80,81交替服务,实现了负载均衡




  负载均衡策略:


    一:轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后段服务器挂掉,能自动剔除


    二:weight(权重策略):默认为1,权重越高被分配的客户端就越多,


upstream myserver {
    server 127.0.0.1:8080 weight=10;
    server 127.0.0.1:8081 weight=5;
    }


    三:ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个服务器,可以解决session共享问题,如第一次访问的是8080,以后用同一ip访问,也都是走8080端口


upstream myserver {
    ip_hash;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }


    四:fair分配:根据后端响应时间来分配,时间越短的优先分配


upstream myserver {
    fair;
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    }


Nginx动静分离


  将动态资源(servlet.jsp.访问数据库等)和静态资源(html,css,image等)分离,提高访问效率


   两种方案:


      1:将静态文件独立成单独的域名,放在独立的服务器,也是目前主流方案


      2:动态和静态文件混合一起发布,通过nginx来分开,


  准备工作:


      1.在linux系统中准备一些静态资源,在根目录下建一个data文件夹,里面方图片和html



      配置nginx.conf     


server {
        listen       80;
        server_name  127.0.0.1;
        location /www/ {  //html文件路径
            root   /data/;
            index  index.html index.htm;
        }
        location /image/ {  //图片路径
            root   /data/;
            autoindex on; //列出目录
        }
}


      结果:




Nginx高可用


  简单来说就是当主服务器宕机时能够服务转移到从服务器


  准备工作:


    1.两台服务器


    2.两台服务器都安装nginx


    3.两台服务器都安装keepalived(切换作用),安装位置在 /etc/keepalived/keepalived.conf


  高可用的配置(修改keeepalived.conf):


    1keeepalived.conf主要三个部分:


      (1):global_defs:全局配置  


         里面最重要的是:router_id   主机名   //作用是访问到主机


      (2):vrrp_script chk_http_port:脚本配置


         script  脚本文件地址       //脚本文件的地址,具体内容在底下


         interval  2   //检测脚本执行的时间,这里是每2秒执行一次


         weight  20  //权重


      (3): vrrp_instance VI_1 : 虚拟主机配置


         state MASTER  //设置是主服务器还是从服务器,这里是主


         interface    ens33     //网卡,这里网卡是ens33,可通过ifconfig命令查看


         virtual_router_id   88 //主从服务器的id标识,两个必须相同


         priority  100  //主从服务器的优先级,一般主机较大,从机较小


         advert_int    1  //检测心跳,就是多久检测以下这台主机是否还活着,这里设置为1秒


         authentication{         //权限验证


             auth_type PASS


             auth_pass  111


         }


         virtual_ipaddress {      


            虚拟ip地址    //绑定虚拟ip,可以绑定多个


          }



   脚本文件内容: 


#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
  /usr/local/nginx/sbin/nginx    //启动nginx的位置
  sleep 2 
  if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
    killall keepalived 
  fi
fi



目录
相关文章
|
2月前
|
应用服务中间件 Apache 数据库
Nginx(一)
Nginx(一)
|
6月前
|
负载均衡 应用服务中间件 网络安全
Nginx详解
Nginx详解
84 2
|
6月前
|
缓存 Unix 应用服务中间件
|
5月前
|
缓存 负载均衡 前端开发
Nginx
Nginx
35 0
|
6月前
|
缓存 负载均衡 应用服务中间件
2.nginx
2.nginx
46 1
|
负载均衡 应用服务中间件 nginx
|
负载均衡 应用服务中间件 Apache
理解nginx
理解nginx
73 0
|
缓存 负载均衡 JavaScript
Nginx 简单入门指北不指南
Nginx 简单入门指北不指南
132 0
|
负载均衡 应用服务中间件 nginx
五分钟进步系列之nginx(一)
五分钟进步系列之nginx(一)
|
缓存 负载均衡 算法
Nginx——详解
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
149 0
Nginx——详解