1. 程式人生 > >Nginx配置之location模塊和proxy模塊

Nginx配置之location模塊和proxy模塊

event end 虛擬主機 include 當我 服務 文件的 域名 時間

1、location指令的用法介紹

Location主要用來匹配url,如:http://www.beyond.com/nice,在這裏對於location來說www.beyond.com是域名,/nice才是url。
對於url的匹配,可以使用字符串或者正則表達式,但如果是正則表達式,必須指定前綴,location指令來匹配不同的url,匹配成功後應用不同的配置
語法:location [=|~|~*|^~|@]/url {…..}
[=]精確匹配,如果找到匹配等號的內容,立即停止搜索,並立即處理請求(優先級最高)
[~]區分大小寫
[^~]只匹配字符串,不匹配正則表達式
[~*]不區分大小寫
[@]指定一個命名的location,一般只應用於內部重定向請求,location @name {???}

示例:

12345678910111213141516171819202122232425262728293031323334

worker_processes 1;

events { worker_connections 1024;}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

  listen 80;

  server_name www.liyunlong.com;

  #No.1 location / { return 502; }

  #No.3 location ~* \.jpg$ { return 403; }

  #No.4 location ^~ /a/ { return 402; }

  #No.5 location /a/1.jpg { return 401; }

  #No.6 location = /a/.jpg { return 400; }}}

小結:
1、等號優先級最高,工作中盡量把等號匹配的放在前邊
2、~* \.jpg$優先級第二
3、^~ /a/優先級第三

proxy模塊的介紹

Nginx轉發模塊是ngx_http_proxy_module,默認安裝,可以直接使用

Proxy_pass此指令用於轉發location匹配到的url到serve池子中。
參數:
proxy_set_header 讓proxy獲取RS的head(虛擬主機名字)
client_body_buffer_size客戶端請求緩存大小,可以理解為先保存本地在傳給用戶
proxy_connect_timeout 與RS鏈接超時的時間
proxy_send_timeout RS回傳數據的時間,必須在這個時間段內傳完,否則斷開連接
proxy_read_timeout 等待RS響應的時間,標明連接已經成功,正在排隊
proxy_buffer_size 緩存區大小,默認等於指令proxy_buffers設置的大小
proxy_buffers 緩沖區的數量和大小,從RS獲取的響應信息會放置到緩沖區
proxy_busy_buffers_size系統很忙時可以使用的proxy_buffers大小,官方推薦的大小是proxy_buffers的兩倍
proxy_temp_file_write_size 緩存臨時文件的大小
proxy_set_headerhost $host當RS有多個虛擬主機的時候需要逐個指定
proxy_set_headerX-Forwarded-For $remote_addr 開啟負載均衡器轉發真實客戶的IP地址給RS.
註意:
“proxy_set_header”當我們的RS有多個虛擬主機(相同的ip,相同的端口)的時候如www、bbs、blog,代理服務器怎麽知道將請求發到哪呢,這個時候nginx代理就會查找proxy_set_header參數,將請求發送到相應域名的虛擬主機上。

http://www.lai18.com/content/24608730.html

Nginx配置之location模塊和proxy模塊