nginx新手入门

分享会

nginx

  • 安装

    • 利用包管理工具(简单)

    • 源码编译安装(灵活,但参数配置比较复杂)

  • 开启,关闭,重载

    • /etc/init.d/nginx start

    # kill -s signal pid(by default to the nginx.pid in the directory /usr/local/nginx/logs or /var/run)
    nginx -s signal
    • stop 快速关闭

    • quit 从容关闭

    • reload 重载配置文件

    • reopen 从新打开日志文件

  • 配置文件所在路径

    /usr/local/etc/nginx /etc/nginx or usr/local/nginx/conf

  • 日志文件所在路径

    /usr/local/nginx/logs or /var/log/nginx

  • 配置文件的基本结构

    • 注释:以#开头,换行符结尾

    • 指令:名字+参数,以;结尾

    • 指令集:名字+用{}包围的多条指令,可嵌套

  • 服务静态内容

    http {
        server {
            location / {
                root /home/fengjun/data/www;
            }
            
            # 匹配最长前缀匹配原则
            location /images/ {
                root /home/fengjun/data;
            }
        }
    }
  • 设置简单的代理服务器

    http {
        server {
            listen 8080;
            root /home/fengjun/data/www;
            
            location / {
                
            }
        }
        
        server {
            location / {
                proxy_pass http://localhost:8080;
            }
        }
    }
  • 构建 FastCGI 代理

    FastCGI servers是一种由各种各样的框架和编程语言(比如说PHP)构建的一种运行程序

    http {
        server {
            # ~ 该修饰符使用区分大小写的正则表达式匹配
            location ~ \.(php)$ {
                fastcgi_pass localhost:9000;(fastcgi_pass  unix:/tmp/php-cgi.sock;)
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param QUERY_STRING    $query_string;
                include fastcgi_params;
            }
        }
    }

跨域

  • 同源策略:浏览器上为安全性考虑实施的非常重要的安全策略。在这个策略下,web浏览器允许第一个页面的脚本访问第二个页面里的数据,但是也只有在两个页面有相同的源时。源是由URI,主机名,端口号组合而成的。这个策略可以阻止一个页面上的恶意脚本通过页面的DOM对象获得访问另一个页面上敏感信息的权限。

    • URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源

对比URL结果分析
http://www.cnblogs.com/a.js http://www.a.com/a.js不同源不同域名
http://www.a.com/lab/a.js http://www.a.com/script/b.js同源同一域名下不同文件夹
http://www.a.com:8000/a.js http://www.a.com/b.js不同源同一域名,不同端口
http://www.a.com/a.js https://www.a.com/b.js不同同一域名,不同协议
http://www.a.com/a.js http://70.32.92.74/b.js不同源域名和域名对应ip
http://www.a.com/a.js http://script.a.com/b.js不同源主域相同,子域不同
http://www.a.com/a.js http://a.com/b.js不同源同一域名,不同二级域名

利用nginx解决跨域问题

# ^~ 该修饰符优先与正则表达式的匹配
location ^~ /proxy/{
  rewrite ^/proxy/(.*)$ /$1 break;
  proxy_pass http://localhost:8888/;
}

补充

nginx的负载均衡

负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它通常是指,将请求/数据''均匀"分摊到多个操作单元上执行

  • nginx提供的一些负载均衡的方法

    • 轮询调度

      //假设有一组服务器S = {S0, S1, …, Sn-1},一个指示变量i表示上一次选择的,n>0,W(Si)表示服务器Si的权值
      i=n-1;
      j=i;
      do{
          j=(j+1)mod n;
          if( W(j)>0 ){
              i=j;
              return i;
          }
      }while(j!=i)
    • 最少连接数调度

      //假设有一组服务器S = {S0, S1, ..., Sn-1},C(Si)表示服务器Si的当前连接数
      for (m = 0; m < n; m++){
        for (i = m+1; i < n; i++) {
            if (C(Si) < C(Sm))  m = i; //找最小值需要两重for循环?
          }
          return m;
      }
      return NULL;
    • 目标地址散列调度

      //假设有一组服务器S = {S0, S1, ..., Sn-1},W(i)表示服务器Si的权值,ServerNode[]是一个Hash表,此表大小就是服务器的数目
      n = ServerNode[hashkey(dest_ip)]; 
      if ( (n is dead) || (W(n) == 0) ) return NULL; 
      return n;
  • 基本的负载均衡配置

    #当没有明确指出负载均衡的调度算法的时候,默认是使用轮询调度
    http {
        upstream myapp1 {
            #least_conn 最少连接数调度
            #ip_hash 目标地址散列调度
            server srv1.example.com;
            server srv2.example.com;
            server srv3.example.com;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://myapp1;
            }
        }
    }
  • 权重:如果没有特别指出每个服务器的权重,那么对于一种特定的调度,每一个服务器将会被平等的对待

    #在这种配置下,如果有5个请求,srv1会被分配3个,srv2会被分配1个,srv3会被分配1个
    upstream myapp1 {
      server srv1.example.com weight=3;
      server srv2.example.com;
      server srv3.example.com;
    }
    
  • 健康检查:当一个服务器响应失败,nginx会标记它,在一定的时间内,nginx会避免再次从服务器集里选择它来发起请求



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值