(轉)Kangle配置文件

kangle配置文件php

(重定向自Kangle配置文件html

目錄node

 [隱藏] python

配置文件介紹linux

  • kangle採用xml的形式,作爲配置文件,並支持配置目錄(即目錄搜索的方式).kangle 3.1中支持平滑的從新加載配置文件,除少數幾個配置項(運行用戶,服務器簽名,磁盤緩存目錄,工做線程)須要從新啓動才能生效,全部配置均可以平滑加載,程序友好。也支持web操做界面,人機友好。
  • kangle的主配置文件爲etc/config.xml,在3.1.1之前虛擬主機相關配置放在etc/vh.xml。3.1.1已經統一爲單一配置文件。
  • kangle支持的配置文件目錄是ext目錄,即kangle/ext目錄下面全部的文件,kangle都會當作配置文件加載並解析。
  • 配置文件編碼,統一採用utf-8編碼。

從新加載配置文件web

  • 咱們提供了命令行的方式從新加載全部配置文件.

kangle -rapache

  • 能夠在3311裏面點從新加載配置文件
  • 也支持編程接口的調用:reload

config編程

配置文件頂層標籤,其它指令都在config之下。windows

<?xml version="1.0" encoding="utf-8"?>後端

<config>

 其它指令

</config>

requestresponse(配置訪問控制)

配置訪問控制,請參考kangle訪問控制

listen(端口配置)

配置靜態偵聽端口。 語法:

<listen

ip='*'

port='端口'

type='http|https|manage|manages'

certificate='證書文件地址'

certificate_key='key文件地址'

sni='1'

/>

  • type 可爲http,manage,https,manages
  • certificate certificate_key sni只有type爲https和manages時才須要
  • sni 是指支持虛擬主機ssl證書,要openssl和瀏覽器都支持,纔有效。目前已知的是centos 5是不支持,ie 6也不支持。

例只偵聽ipv4的80端口

<listen ip='0.0.0.0' port='80' type='http' />

只偵聽ipv6的80端口

<listen ip='::' port='80' type='http' />

指定ip

<listen ip='127.0.0.1' port='80' type='http' />

偵聽ssl

<listen

ip='*'

port='443'

type='https'

certificate='證書文件地址'

certificate_key='key文件地址'

sni='1'

/>

rununix系統設置kangle運行用戶)

unix系統設置kangle工做進程運行用戶。

<run user='用戶名' group='組名'/>

  • 用戶名可用#uid,組名可用#gid。
  • 必需要用root身份啓動
  • kangle的var目錄,tmp目錄,對運行用戶要有寫的權限。etc/config.xml文件也要有寫的文檔,若是你使用web管理。

使如設置運行在kangle用戶下。

<run user='kangle' group='kangle'/>

lang(語言)

設置3311管理用的語言 使用中文

<lang>zh_CN</lang>

指明英語

<lang>en_US</lang>

keep_alive(http長鏈接)

設置http長鏈接超時時間,單位秒,設置爲0,則禁用http長鏈接(不建議).

<keep_alive>30</keep_alive>

connect_timeout(鏈接超時connect time out)

設置鏈接超時時間,單位秒

<connect_timeout>11</connect_timeout>

keep_alive_count(長鏈接過載保護)

長鏈接數默認是2000(能夠根據須要修改,如:200),新版加了這個參數,有效實現過載保護,鏈接數一超,就採用短鏈接。舊版沒有這個設置,鏈接數高,仍是保持長鏈接,致使負載過高。

<keep_alive_count>2000</keep_alive_count>

timeout(超時)

設置讀寫超時時間,單位秒,不能低於5秒,最好不超過120秒。

<timeout>30</timeout>

min_free_thread

設置回收空閒線程時,最小保留值。設置爲0,不保留。

<min_free_thread>0</min_free_thread>

gzip(gzip壓縮)

設置gzip壓縮

<gzip only_gzip_cache='0' min_gzip_length='256' gzip_level='5'/>

  • only_gzip_cache 是否僅壓縮能夠緩存的網頁。1表示僅壓縮能緩存的網頁(通常是靜態文件),0表示所有壓縮,包括動態網頁
  • min_gzip_length 最小壓縮大小。若是網頁過小,壓縮只會浪費cpu.毫無心義。
  • gzip_level 壓縮級別(1-9),建議設置爲5,數字越大,壓縮率越高,相應的耗的cpu就會越多。

connect(鏈接數)

設置鏈接數

<connect max_per_ip='0' max='0' />

  • max_per_ip 設置每ip最大鏈接數,0表示不限制。
  • max 設置總共最大鏈接數,0表示不限制。

per_ip(特殊ip段鏈接數)

設置特殊ip段的每ip鏈接數限制,在connect標籤下面(3.1.1版本以上)。

<connect max_per_ip='0' max='0'>

  <per_ip src='ip段' max='鏈接數'/>

  <per_ip .../>

</connect>

  • ip 段爲cidr格式。如192.168.1.1,192.168.1.0/24
  • max 每ip鏈接數,0爲不限制,deny爲拒絕鏈接

例,設置192.168.0.0/24每ip鏈接數不限,10.0.0.0/8,拒絕鏈接,其它ip的鏈接數設置爲20,以下配置。

<config>

 <connect max_per_ip='20' max='0'>

   <per_ip src='192.168.0.0/24' max='0'/>

   <per_ip src='10.0.0.0/8' max='deny'/>

 </connect>

</config>

request_queue

設置全局請求隊列

<request_queue max_worker='8' max_queue='100'/>

  • max_worker 最大工做者,全部工做者忙時,會放入隊列。
  • max_queue 最多隊列,0表示不限制
  • 對於緩存和靜態文件,不會佔用請求隊列。僅代理和動態請求才會佔用請求隊列。
  • kangle會採用兩種策略拋棄當前的請求,直接回應503服務器忙,一個是請求隊列超過了max_queue設置的數,一個是請求隊列等待的時間超過超時時間(timeout設置)。

tempfile

設置是否使用臨時文件交換數據

<tempfile>1</tempfile>

如設置使用內存交換

<tempfile>0</tempfile>

  • 用於反向代理,建議設置爲使用內存交換,不然碰到很大的下載,反應很慢。
  • 用於本地應用,如fastcgiphp,建議設置臨時文件,及大的改善後端壓力。
  • kangle 3.1中在訪問控制中若是使用了temp_file標記模塊指定數據交換,以訪問控制中爲準

max_post_size

設置最大post數據,僅對採用臨時文件交換數據纔有做用

<max_post_size>8M</max_post_size>

buffer

設置數據緩衝區大小

<buffer>32K</buffer>

不建議低於8K

path_info

設置是否啓用path info的支持

<path_info>1</path_info>

  • 0不啓用,1啓用,建議啓用,若是確切知道不用該功能,可設置爲0,提升點性能。
  • 所謂path info是指 http://www.kanglesoft.com/test.php/a/b 這樣形式的訪問。

cache(緩存)

設置緩存

<cache

default='1'

max_cache_size='1M'

max_bigobj_size='1G'

memory='10M'

disk='10G'

disk_dir='d:\test\'

disk_work_time='* 1-6 * * *'

refresh_time='60'

/>

  • default 是否默認緩存,0或1,建議設置爲1
  • max_cache_size 普通緩存最大緩存網頁
  • max_bigobj_size 智能緩存最大緩存網頁(商業版功能)
  • memory 內存緩存總大小
  • disk 磁盤緩存總大小
  • disk_dir 磁盤緩存目錄(該目錄要格式化爲緩存目錄)
  • disk_work_time 磁盤清理和掃描時間(格式同crontab),不設置爲即時工做,* 1-6 * * * 表示,天天早上1到7點工做,對於高io負載時建議這樣設置。
  • refresh_time 默認緩存時間(即沒有指定max_age時,緩存時間),單位秒

async_io

設置是否使用異步IO

<async_io>1</async_io>

  • 0表示不啓用異步IO,1表示啓用異步IO

access_log(全局訪問日誌)

設置全局訪問日誌文件

<access_log>var/access.log</access_log>

  • 若是文件名不是絕對路徑,則以kangle安裝目錄爲當前目錄
  • 設置爲/nolog則禁用訪問日誌。

access_log_handle

設置訪問日誌處理,每次kangle翻轉訪問日誌時自動調用該命令對日誌進行處理

<access_log_handle><![CDATA[/vhs/kangle/bin/webalizer -F clf -p -Q -o ${log_dir}/../webalizer/ ${log_file}]]></access_log_handle>

  • 以上是使用webalizer作日誌分析的一個例子
  • ${log_dir}表示日誌目錄
  • ${log_file}表示日誌文件

如下給個linux下壓縮日誌的例子

<access_log_handle>/usr/bin/gzip ${log_file}</access_log_handle>

log_handle_concurrent

設置訪問日誌處理時,最多併發進程數

<log_handle_concurrent>2</log_handle_concurrent>

log(全局日誌)

設置全局日誌信息

<log

level='3'

rotate_time='0 0 * * *'

rotate_size='100M'

error_rotate_size='100M'

logs_day='30'

logs_size='500M'

log_handle='1'

/>

  • level 表示錯誤日誌(var/server.log)記錄級別,0-5,數字越大,記錄的信息越多。建議爲3
  • rotate_time 全局日誌翻轉時間,格式同crontab, 0 0 * * * 表示天天0點翻轉日誌.
  • rotate_size 全局日誌按大小翻轉,單個日誌超過這個大小就翻轉。
  • rotate_time和rotate_size可選一個,或者兩個都寫。
  • logs_day 總日誌保存時間,單位天。kangle會把超過這個天數的文件自動刪除,因此日誌目錄切不能設置爲有重要文件的目錄。
  • logs_size 總日誌大小,按大小計算,刪除舊的日誌文件。
  • log_handle 是否使用access_log_handle處理,爲1時處理,0時不處理。

server_software

設置服務器簽名。

<server_software>簽名</server_software>

如:

<server_software>httpd/2.2</server_software>

hostname

設置服務器名字,用於出錯時,附加到錯誤信息上,方便定位出錯。格式:

<hostname>服務器名</hostname>

worker_io(IO工做者)

設置io最大工做者.

<worker_io>10</worker_io>

  • 對於磁盤交換IO,和異步IO,kangle會創建一個工做隊列,由worker_io指定一個最大工做者,超過的排隊。請設置合理數字,可下降系統IO爆發的壓力。
  • 設置0不限制。

worker_dns

admin(web管理)

設置web管理訪問受權(默認是3311端口)

<admin

user='admin'

password='d4b4180809b577da4cadeecb4cd31b67'

crypt='md5'

auth_type='Basic'

admin_ips='127.0.0.1|*'

/>

  • user 登陸用戶名
  • password 密碼
  • crypt 密碼類型,可選md5,plain,md5表示password是md5加密過的,plain表示是明文
  • auth_type http認證類型,可選Basic,Digest
  • admin_ips 容許ip訪問,由|分開,*表示所有ip

例:

<admin

user='admin'

password='kangle'

crypt='plain'

auth_type='Basic'

admin_ips='127.0.0.1|*'

/>

server(服務器擴展)

定義一個服務器擴展:

單節點

<server name='kangle' proto='http' host='192.168.1.1' port='80' life_time='0' />

  • name 名字
  • proto 協議,可選: http,fastcgi,ajp,uwsgi,scgi,hmux
  • 常見proto,反向代理協議用http,鏈接php用fastcgi,鏈接tomcat,jboss用ajp,鏈接uwsgi跑的python用uwsgi,鏈接python支持的scgi用scgi,resin用hmux
  • host ip地址
  • port 端口號
  • life_time 長鏈接時間,設置爲0,禁用長鏈接。

多節點

<server

 name='tests'

 proto='http'

 ip_hash='1'

 cookie_stick='1'

 error_try_time='30'

 max_error_count='5'

<node  weight='1' host='192.168.1.1' port='80' life_time='0' />

<node  weight='1' host='192.168.1.2' port='80' life_time='0' />

</server>

  • name,proto和單節點同樣
  • ip_hash 是否使用ip_hash選擇節點。
  • cookie_stick 是否使用cookie粘着,選擇節點。可和ip_hash單獨使用,也可一塊兒使用。
  • error_try_time 錯誤重試時間,一但某個節點被判斷爲壞節點時,過多久,再從新測試。單位秒。
  • max_error_count 連續錯誤次數超過設置值,就會被kangle認爲是壞節點,而從節點中摘除,直到從新測試爲能連通爲止
  • node定義節點,能夠爲多個
    • weitht 定義節點的重量,重量越大,使用該節點的次數就越多。爲0,爲備份節點,只有全部非備份節點全壞時,才使用備份節點。
    • host,port,life_time和單節點同樣。

api(api擴展)

定義api擴展,api兼容isapi.爲動態連接庫文件,windows爲dll,linux爲so。

<api name='asp' file='bin/kasp.dll' type='sp'  life_time='60'>

</api>

  • type爲api加載類型,可選值爲sp和mt
    • sp由kangle工做進程加載,不獨立進程,又叫進程內api
    • mt由extworker程序加載,獨立工做進程,又叫進程外api.
    • sp的性能比mt的性能高,但mt的穩定性比sp高,若是api有bug,會致使加載的進程出問題。

cgi(cgi擴展)

定義cgi擴展,cgi公共網關接口,有關cgi請參考: http://baike.baidu.com/view/369917.htm

<cgi name='php' cmd='/usr/bin/php-cgi' arg='參數' env='環境變量' env_split='|' />

  • name cgi名字
  • cmd 執行程序
  • arg 參數(多個參數由空格分開) %s表示執行腳本文件。
  • env 環境變量,多個環境變量由|分開,如a=1|b=2
  • env_split 多個環境變量分割符,默認是|
  • cgi是一種性能低下的擴展,每次執行都要啓動一個新的進程,因此儘可能避免使用。

cmd(命令擴展)

參考Kangle命令擴展

vhs(虛擬主機全局)

設置虛擬主機全局的一些配置,位於config標籤下。

<vhs  error_404='/404.html'>

其它指令

</vhs>

  • error_錯誤代碼 設置全局自定義錯誤頁面,目前僅404和403可設置。

index(默認文件)

設置默認文件(可放在vhs和vh下面)

<index file='index.php'/>

  • index 可在vhs標籤下,也可在vh下面,分別設置全局和指定虛擬主機的默認文件。

map(擴展映射)

擴展映射,可在vhs和vh標籤下。格式:

文件擴展名映射

設置按文件擴展名映射

<map file_ext='asp' extend='api:asp' allow_method='*'  confirm_file='1' />

  • file_ext 文件擴展名
  • extend 擴展,格式是擴展類型:名字,擴展類型有api,cgi,server,cmd,或者是沒有名字,直接爲cgi,ssi
  • allow_method 容許方法,多個方法用逗號分割。如GET,POST *表示所有
  • confirm_file 確認文件存在(0或1),默認爲1,如爲1時,文件存在,kangle才交給擴展處理,不然直接404,爲0時kangle不確認。

按路徑映射

按url的path來映射擴展

<map path='/' extend='擴展' allow_method='*' confirm_file='0'/>

  • path 爲url的path,如開頭爲~的,則用正則匹配,不然只匹配前面部分。如:

<map path='~\.php$' extend='server:php' allow_method='*' confirm_file='1'/>

  • 其它參數同文件擴展名映射同樣。

alias(別名)

設置虛擬主機別名,可在vhs和vh標籤下。格式:

<alias path='url路徑' to='物理路徑' internal='0或1'/>

  • path爲url的路徑,如:/abc/
  • to爲物理路徑,如:d:\kangle\www\
  • internal 是否爲內部請求,默認是0,如爲內部請求,則只有內部請求才有效。

例:

<alias path='/aa/' to='D:\project\kangle\www\'/>

mime_type(mime類型)

設置mime類型,可在vhs和vh標籤下。格式:

<mime_type ext='文件擴展名' type='mime類型' gzip='0或1' max_age='緩存時間(秒)'/>

  • ext 文件擴展名,*表示默認mime類型
  • gzip 是否壓縮,1表示壓縮,0不壓縮(由訪問控制肯定是否壓縮)
  • max_age 緩存時間,若是不寫或爲0,由全局設置的緩存的時間爲準(cache下的refresh_time),但訪問控制的設置可覆蓋本設置。

例:

<mime_type ext='html' type='text/html' gzip='1'/>

vh(虛擬主機)

定義一個虛擬主機,在config標籤下。

<vh

 name='名字'

 doc_root='路徑'

 log_file='獨立日誌'

 log_rotate_time='0 0 * * *'

 log_rotate_size='100m'

 inherit='on或off'

 user='運行用戶'

 group='運行組'

 password='密碼'

 app='1'

 ip_hash='1'

 app_share='0或1或2'

 browse='on或off'

 access='自定義訪問文件'

 htaccess='htaccess文件名'

 concat='0或1'

 max_connect='100'

 speed_limit='10240'

 fflow='1'

 max_worker='10'

 max_queue='0'

 certificate='ssl證書文件'

 certificate_key='ssl證書key文件'

 status='狀態'

 >

   其它指令

</vh>

  • name 虛擬主機的名字,不可重複,由字母和數字組成
  • doc_root 虛擬主機家目錄
  • log_file 獨立日誌,若是不是絕對地址,則以虛擬主機家目錄爲當前目錄。
  • log_rotate_time 日誌翻轉時間,格式同crontab
  • log_rotate_size 日誌翻轉大小。
  • inherit 是否繼承全局的設置,on爲繼承,off不繼承,繼承自定義錯誤,擴展映射(map),默認首頁(index),別名(alias)設置。若有衝突,則以虛擬主機的設置的爲準,便可覆蓋全局設置。
  • user 運行用戶,unix下能夠爲用戶名或#uid.
  • group 運行用戶,unix下用,windows不用。可爲#gid
  • password 用戶密碼,windows下用,unix不用。

user,group,password 這個運行身份,僅對擴展cmdcgikangle進程要以超級用戶運行纔有效。即要啓動子進程服務時的一個運行身份。

  • app 應用程序池數量,對於無多進程的擴展,如進程外api擴展和單進程的cmd擴展。設置app,可啓動多個子進程。其它的狀況,請設置爲1.
  • ip_hash 對於app大於1的狀況下,啓用ip_hash有助於鎖定子進程和ip關連。而不置於用戶在各個應用程序池之間來回切換。app爲1時,此值無心義。
  • app_share 應用程序池共享模式,有0,1,2三種取值,0爲獨享,1爲相同運行用戶共享,2爲全局共享。建議取值爲1.默認爲0。
  • browse 是否容許瀏覽模式,取值爲on或off,對於一個目錄下沒有默認文件,若是爲on,則列出該目錄下全部文件和子目錄,不然顯示403錯誤。默認爲off.
  • access 自定義的訪問控制文件名,爲空不支持。取值爲-,爲內置模式,即訪問控制部分配置包含在vh標籤下。,默認爲空不支持。
  • htaccess 兼容apache的htaccess文件名,爲空不支持apache的.htaccess。目前kangle部分兼容了apache的.htaccess重寫指令。默認爲空不支持。
  • concat 是否容許組合請求模式,0不支持,1支持組合請求,默認爲0。
  • max_connect 最大鏈接數,0不限制,默認爲0
  • speed_limit 帶寬限制,單位字節/秒,0不限制,默認爲0
  • fflow 是否流量統計 0或1,默認爲0
  • max_worker 最大工做者,爲0,使用全局最大工做者,默認爲0
  • max_queue 最大隊列,爲0不限隊列大小,默認爲0.
  • certificate ssl證書文件,可爲絕對路徑和相對路徑,如爲相對路徑則以虛擬主機的doc_root爲當前目錄。
  • certificate_key ssl證書key文件,可爲絕對路徑和相對路徑,如爲相對路徑則以虛擬主機的doc_root爲當前目錄。
  • status 狀態,爲0正常,非0,全部訪問顯示503.默認爲0。

host(域名綁定)

綁定域名,在vh標籤下,格式:

<host dir='子目錄>域名</host>

  • dir爲子目錄,也能夠爲http://ip:port/ 表示反向代理。擴展閱讀kangle反向代理.
  • 域名可爲*,表示全部域名。或 *.abc.com,表示泛域名。
  • 綁定多個域名,能夠有多個host.

例:

<host>*</host>

<host dir='www'>abc.com</host>

bind(ip端口綁定)

綁定到指定ip或端口上(3.1版本),在vh標籤下。格式:

<bind>!ip:port</bind>

  • ip能夠爲*,表示全部ip,或爲0.0.0.0表示全部ipv4的ip,或::表示全部ipv6的ip,或指定一個ip.
  • port 端口,如以s結尾,由表示是ssl端口,如443s,但要配置虛擬主機的ssl證書和key文件。
  • bind能夠有多個,表示一個虛擬主機綁定到多個端口上。
  • 若是一個vh沒有一個bind,則會綁定到全部已經打開的端口。但優先級會低於指定綁定的虛擬主機。

例:綁定到80端口和443 ssl端口

<vh 其它配置>

   <bind>!*:80</bind>

   <bind>!*:443s</bind>

</vh>

index,map,alias,mime_type

vh下的index,map,alias,mime_type請參考vhs下的index,map,alias,mime_type

相關文章
相關標籤/搜索