Nginx代理功能(未完)

Nginx代理模塊允許傳遞請求到其它的服務器。

指令
Syntax:    proxy_bind address | off;
Default:    —
Context:    http, server, location
This directive appeared in version 0.8.22.

強制將與代理本機連接綁到指定IP地址,通俗來講就是配置了多個基於名稱或者基於IP的主機情況下,如果希望代理連接由指定的主機處理,就可以使用該指令進行配置。
當值爲off,系統自動分配本機IP地址。

Syntax:    proxy_buffer_size size;
Default:    proxy_buffer_size 4k|8k;
Context:    http, server, location
設置第一次從代理服務器收到的響應的buffer的大小。這部分通常包含小的響應頭部。默認,buffer大小等於內存頁大小。可以是4K或8K,依賴於系統平臺。當然也可以更小。

Syntax:    proxy_buffering on | off;
Default:    proxy_buffering on;
Context:    http, server, location
開啓或關閉代理服務器的響應buffer功能。當nginx收到代理服務器的響應時候,它通過proxy_buffer_size和proxy_buffer指令設置。如果正響應沒有合適的內存,部分可以保存在temporary_file裏面。寫入內存則通過proxy_max_temp_file_size 和 proxy_temp_file_write_size指令來設置。
當buffering關閉的時候,請求傳遞到客戶端是同步的,當nginx收到響應的時候,立即回覆。收到響應數據的最大大小可以被proxy_buffer_size指令設置。
bufferring可以開啓或禁止傳遞yes或no在”X-Accel-Buffering”響應頭部中設置。這個能力可以使用proxy_ignore_headers指令禁止。

Syntax:    proxy_buffers number size;
Default:    proxy_buffers 8 4k|8k;
Context:    http, server, location
類似於gzip_buffers不在敘述。

Syntax:    proxy_busy_buffers_size size;
Default:    proxy_busy_buffers_size 8k|16k;
Context:    http, server, location
該指令限制同時處於busy狀態的buffer大小,默認size爲兩倍的proxy_buffer_size和proxy_buffer指令的大小。

Syntax:    proxy_cache zone | off;
Default:    proxy_cache off;
Context:    http, server, location
定義一個用於緩存的的共享內存區間,同樣的區間可以被用在幾個位置。參數值可以包含變量。off參數禁止緩存。

Syntax:    proxy_cache_bypass string ...;
Default:    —
Context:    http, server, location
定義一個條件,什麼響應不會從cache中獲取。如果字符串參數至少一個值而且不爲空,那麼響應不會從cache中獲取。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma    $http_authorization;
可以同proxy_no_cache指令一起使用。

Syntax:    proxy_cache_convert_head on | off;
Default:    proxy_cache_convert_head on;
Context:    http, server, location
This directive appeared in version 1.9.7.
開啓或禁止或禁止HRAD方法會話。當會話被禁止了,cache_key應該被配置爲包含$request_method

Syntax:    proxy_cache_key string;
Default:    proxy_cache_key $scheme$proxy_host$request_uri;
Context:    http, server, location
定義緩存的key,例如。
proxy_cache_key "$host$request_uri $cookie_user";
默認這個指令的值緊跟着字符串
proxy_cache_key $scheme$proxy_host$uri$is_args$args;

Syntax:proxy_cache_lock on | off;
Default:proxy_cache_lock off;
Context:http, server, location
當開啓之後,只有一個請求在一段時間內被允許填充新的cache元素,根據proxy_cache_key指令來標示是什麼cache傳遞到代理服務器。其它相同cache的請求要麼等待cache中的響應,要麼鎖住這個cahe釋放,根據proxy_cache_lock_timeout指令來設置。

Syntax:    proxy_cache_lock_age time;
Default:    proxy_cache_lock_age 5s;
Context:    http, server, location
如果最近的請求傳遞到被代理的服務器來填充新的cache元素,還沒有完成,一個或更多請求可以被傳遞到代理服務器。

Syntax:    proxy_cache_lock_timeout time;
Default:    proxy_cache_lock_timeout 5s;
Context:    http, server, location
設置proxy_cahce_lock的超時時長,當time過期的時候,這個請求會傳遞到被代理的服務器,不管怎麼樣,響應不會被cached。
Before 1.7.8, the response could be cached.

Syntax:    proxy_cache_methods GET | HEAD | POST ...;
Default:    proxy_cache_methods GET HEAD;
Context:    http, server, location
客戶端的請求方法列出在這個指令中,然後想要被cached,”GET”和”HEAD”方法一直被加入這個list中,儘管官方要求精確的指定方法。

Syntax:    proxy_cache_min_uses number;
Default:    proxy_cache_min_uses 1;
Context:    http, server, location
在響應數據被cached之後,發送給客戶端的次數。

Syntax:    proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default:    —
Context:    http
設置cahe的路徑和其它參數,cache數據存儲在文件裏面,這個文件名是在cache中爲應用MD5函數的結果。levels參數定義cache的層級關係。例如,在下面的配置中
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名看起來就像這樣
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

Syntax:    proxy_cache_purge string ...;
Default:    —
Context:    http, server, location
This directive appeared in version 1.5.7.
定義一個條件,什麼請求會被看做清除cache的請求。類似於proxy_cache_bypass。
案例:
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;
    }
}

Syntax:    proxy_cache_revalidate on | off;
Default:    proxy_cache_revalidate off;
Context:    http, server, location
開啓cache重用功能,如果請求使用了”If-Modified-Since”和”If-None-Match”頭部元素。

Syntax:    proxy_cache_valid [code ...] time;
Default:    —
Context:    http, server, location
爲不同的響應碼設置不同的cache時間
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

指令實在是太多,請參考原文
http://nginx.org/en/docs/http/ngx_http_proxy_module.html

實例:
upstrean videobackend
{
    server 192.168.1.2:80;
    server 192.168.1.3:80;
    server 192.168.1.4:80;
}
upstream filebackend
{
    server 192.168.1.5:80;
    server 192.168.1.6:80;
    server 192.168.1.7:80;
}
server
{
    listen 80;
    server_name www.myweb.com
    index index.html index.htm;
    location /video/ {
        proxy_pass http://videobackend;
        proxy_set_header host $host    ;
        ……
    }
    location /file/ {
        proxy_pass http://filebackend;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forward-For    $proxy_add_x_forwarded_for;
        ……
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章