nginx学习笔记

ngix(engine x)--高性能的http和反向代理服务器
nginx优点:源代码以BSD许可证发布,稳定性,丰富的功能集,示例配置文件,低系统资源的消耗

nginx主要是用来做:1,虚拟主机
                            2,负载均衡
                                 3,动静分离
                                 4,反向代理

推荐几个学习网站:博客园,简书,stackOverflow

下载:linux:nginx-1.13.9.tar.gz
     windows:nginx-1.13.9.zip

安装
    linux安装(生产环境):
        1.解压nginx-1.13.6.tar.gz

            tar  -zxvf   nginx-1.13.6.tar.gz

        2.安装编译环境(需要root用户)

            #gcc

            yum install gcc-c++

            #pcre

            yum install -y pcre pcre-devel

            #zlib

            yum install -y zlib zlib-devel

          #openssl

          yum  install -y openssl openssl-devel

        3.编译&安装(底层是c,需要编译安装)

            cd nginx-1.13.6

            (安装一般使用/usr/local目录,mkdir -p /usr/local/nginx/bin)
            ./configure–prefix=/usr/local/nginx/bin

            make

            make  install
        4.命令

            cd  /usr/local/nginx/bin

            sbin/nginx  #启动,如果出现403将  conf/nginx.conf  头部添加user  root;

           (使用自定的配置文件启动 sbin/nginx -c conf/nginx_file) 
            sbin/nginx -s stop  #停止

            sbin/nginx-s quit  #停止

          sbin/nginx-s reload  #重新加载配置文件

windows安装(自学):

1.怎么搭建文件服务器?
  http服务器
        nginx默认启动的时候使用conf/nginx.conf
       worker_processes 1;  #工作核心(默认即可,一般情况与服务器核有关):一个请求过来了,请求分发(相当于一个调度器) 
        events{
            worker_connections 1024; #一瞬间最大连接数(默认即可)
        }
       
        http{

            includemime.types;  #可以访问的媒体类型(默认即可)
            default_typeapplication/Octet-stream; (默认即可)
           
            sendfile  on;  (默认即可)

            keepalive_timeout  65;  (默认即可)

             server {    #主要修改的地方
                  listen      80;       # 监听的端口    

                  server_name localhost;   # 服务器的Ip

                           location/ {

                                root   html;          # 访问的根目录 html

                                index  index.html index.htm;  # 默认访问页面

                            }

                     }

              }
     

用sftp协议将文件上传到nginx服务器中(java实现)(工具类)

依赖:jsch包

/**
*@author
*@date
*@param     host主机,
 *      port 端口,
 *      username 用户名,
 *      password 密码,
 *      is 输入流,
 *      fileName 文件名,  文件名 需要经过uuid加密
 *      path 文件上传的路径]
*@return java.lang.String
*/

//与spring整合的时候,可以将这些属性放到配置文件中
public String upload(String host,Integer port,String username,
                     Stringpassword,InputStream is,String fileName,
                     String path) throwsException {
    //创建对象
    JSch jsch = new JSch();
    //根据用户名,主机IP,端口获取一个session对象
    Session session =jsch.getSession(host, username, port);
    //设置密码
    if(password != null){
       session.setPassword(password);
    }
    //设置第一次访问的时候  不要检查一些额外配置
    Properties configTemp = newProperties();
   configTemp.put("StrictHostKeyChecking","no");
    //为session对象设置Properties
    session.setConfig(configTemp);
    //设置timeout时间 5秒
    //session.setTimeout(5000);
    //连接服务器
    session.connect();
    //可以使用session进行操作
    //打开sftp管道
    ChannelSftp channel = (ChannelSftp)session.openChannel("sftp");
    //建立sftp通道的连接
    channel.connect();
    //上传  最后一个参数 覆盖还是上传
   channel.put(is,path+"/"+fileName,ChannelSftp.OVERWRITE);
    //退出
    channel.quit();
    //关闭流
    if(channel != null){
        channel.disconnect();
    }
    if(session != null){
        session.disconnect();
    }
    return"http://ip/"+fileName;//可以将这个链接保存到数据库中
}

2.反向代理(用nginx代理tomcat等服务器)
       
    http{

    #  后台服务器列表

    upstream tomcat_server{

        server127.0.0.1:8080; #如果有多个服务器,可以配置多个
    }

    server {

       listen       80;       # 监听的端口    

       server_name  localhost;   # 服务器的Ip

        location/ {

           proxy_pass http://tomcat_server;  #代理服务器地址
        }

    }

  }

3.虚拟主机(将一台服务器,虚拟出多台服务器,供多人使用)
    在一台主机上搭建多个网站,使用的端口都是一样的
http{

    #  后台服务器列表

    upstream sina_server{

        server127.0.0.1:8080;

    }

    upstreamsohu_server{

        server127.0.0.1:8081;

    }

    server {

       listen       80;       # 监听的端口    

       server_name  www.sina.com;   # 服务器的Ip

        location/ {

           proxy_pass http://sina_server;

        }

    }

     server {

       listen       80;       # 监听的端口    

       server_name  www.sohu.com;   # 服务器的Ip

        location/ {

           proxy_pass http://sohu_server;

        }

    }

  }

4.负载均衡(默认策略是:轮寻)
http{

    #  后台服务器列表

    #  负载均衡

    upstream sina_server{

        server127.0.0.1:8080 weight=10;  #策略 权重2:1概率
        server 127.0.0.1:8082 weight=5;

    }

    server {

       listen       80;       # 监听的端口    

       server_name  www.sina.com;   # 服务器的Ip

        location/ {

           proxy_pass http://sina_server;

        }

    }

   
5.动静分离(将静态资源放到nginx服务器中)
 server {

       listen       80;       # 监听的端口    

       server_name  www.sohu.com;   # 服务器的Ip

        # 对非静态资源的处理

        location/ {

           proxy_pass http://sohu_server;

        }

        # 对静态资源处理

        location~ .*\.(js|css|ico|png|jpg|eot|svg|ttf|woff){

            rootfile;

  #file文件目录
        }

    }


如何处理高并发问题:
    1.集群
    2.动静分离.负载均衡
    3.做缓存 
    4.消息队列(限流)

 


    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值