• Nginx模块之ngx_http_proxy_module


    ngx_http_proxy_module模块:

    示例:

    location / {
        proxy_pass       http://localhost:8000;
        proxy_set_header Host  $host;
        proxy_set_header X-Real-IP $remote_addr;
    } 

    proxy_pass: 用户对指定URL的请求都转交给后端另外一台服务器

    格式:

     location /url {
        proxy_pass http://back_server:port/newurl;
     }
     
     /url --> /newurl

    特殊情况:
      1.如果是 ~ | ~* 模式匹配的url,是可以忽略的,这种情况proxy_pass http://back_server:port/newurl/url;
      2.如果location中使用了重定向的话,代理的url是重定向后的url地址

    示例:

    location / {
        proxy_pass http://192.168.1.103/;            
    }
    location /bbs {
        proxy_pass http://192.168.1.103/bbs/;    
    }       
    location /forum {
        proxy_pass http://192.168.1.103/bbs;    
    }
    location ~* .(jpg|png|gif)$ {
      proxy_pass http://192.168.1.103;  //这里是模式匹配的情况,图片访问时地址会加到url后面
    }

    proxy_set_header: 向后端发送特定首部,并且记录真实的客户端IP地址

    格式:

    location / {
       proxy_set_header Host $host;  // 将$host客户端请求首部的值放到Host变量中
       proxy_set_header X-Real-IP $remote_addr;  //将$remote_addr客户端ip放到X-Real-IP变量中 }

     修改后端服务器日志格式:

    LogFormat "%{X-Real-IP}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
      %h --> %{X-Real-IP}i

     proxy_cache_path: 设置缓存路径及其他缓存参数

     格式:

    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;  //指定了磁盘空间上存放内容的位置;磁盘上内容的存放结构;内存空间中存放的键名字和大小;
    context: http  //proxy_cache_path上下文是http,只能在http配置段中配置
    示例:
     proxy_cache_path /cache/nginx/ levels=1:1 keys_zone=mycache:32m;

    proxy_cache_methods: 客户端使用哪一类请求才会被缓存,默认是GET和HEAD

    格式:

    Syntax:    proxy_cache_methods GET | HEAD | POST ...;
    Default:    
    proxy_cache_methods GET HEAD;
    Context:    http, server, location
    This directive appeared in version 0.7.59.

    proxy_cache_min_usrs:某一个请求被请求多少次才会被缓存,默认是一次 

     格式:

    Syntax:    proxy_cache_min_uses number;
    Default:    
    proxy_cache_min_uses 1;
    Context:    http, server, location

      proxy_cache_purge: 管理缓存空间中的缓存条目

     格式:

    Syntax:    proxy_cache_purge string ...;
    Default:    —
    Context:    http, server, location
    This directive appeared in version 1.5.7.

    示例:

    proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
    
    map $request_method $purge_method {
        PURGE   1;
        default 0;
    }
    
    server {
        ...
        location / {
            proxy_pass http://backend;
            proxy_cache cache_zone;
            proxy_cache_key $uri;
            proxy_cache_purge $purge_method;
        }
    } 

    proxy_cache_revalidate: 过期后重新校验缓存

     格式:

    Syntax:    proxy_cache_revalidate on | off;
    Default:    
    proxy_cache_revalidate off;
    Context:    http, server, location
    This directive appeared in version 1.5.7.

    proxy_cache_use_stale: 是否使用已经过期的缓存响应客户请求

     格式:

    Syntax:    proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;
    Default:    
    proxy_cache_use_stale off;
    Context:    http, server, location

     proxy_cache_valid: 对不同响应码设置缓存时间

    格式:

    Syntax:    proxy_cache_valid [code ...] time;
    Default:    —
    Context:    http, server, location

     示例:

    proxy_cache_valid 200 302 10m; 
    proxy_cache_valid 301      1h;
    proxy_cache_valid any      1m;

     proxy_connect_timeout: 向后端发送请求连接的超时时长

    格式:

    Syntax:    proxy_connect_timeout time;
    Default:    
    proxy_connect_timeout 60s;
    Context:    http, server, location

     proxy_hide_header: proxy向客户端响应请求时隐藏首部

    格式:

    Syntax:    proxy_hide_header field;
    Default:    —
    Context:    http, server, location

     proxy_read_timeout: 代理服务器发出响应的超时时间

    格式:

    Syntax:    proxy_read_timeout time;
    Default:    
    proxy_read_timeout 60s;
    Context:    http, server, location

     proxy_pass_request_headers: 是否将客户端的请求报文中的请求首部原封不动的发到后端  

    格式:

    Syntax:    proxy_pass_request_headers on | off;
    Default:    
    proxy_pass_request_headers on;
    Context:    http, server, location

    proxy_pass_request_body: 是否将客户端的请求报文中的body发到后端

    格式:

    Syntax:    proxy_pass_request_body on | off;
    Default:    
    proxy_pass_request_body on;
    Context:    http, server, location

    proxy_buffers: 将代理服务器的响应放到缓冲中

    格式:

    Syntax:    proxy_buffers number size;
    Default:    
    proxy_buffers 8 4k|8k;
    Context:    http, server, location

    proxy_cache_bypass: 设置在何种情形下nginx将不从cache取数据的 

    格式:

    Syntax:    proxy_cache_bypass string ...;  //string的值调用内建函数:$cookie_nocache,$arg_nocache,$http_authorization
    Default:    —
    Context:    http, server, location

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Mvc4.0添加商品到Cookie
    个人作业——词频统计
    利用飞信虚拟框架开发绿色.NET程序
    专用服务器和共享服务器的区别(转)
    我做项目对Excel进程处理问题
    通过SQL Server 2000的链接服务器访问Sybase数据库
    结合地理信息系统开发的项目
    模仿Smartphone的开始菜单效果
    如何修改Windows Mobile手机系统颜色
    个人负责的第一个地图应用项目框架截图
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10875047.html
Copyright © 2020-2023  润新知