摘要:配置文件介绍 kangle采用xml的形式,做为配置文件,并支持配置目录(即目录搜索的方式).kangle 3.1中支持平滑的重新加载配置文件,除少数几个配置项(运行用户,服务器签名,磁盘缓存目录,工作线程)需要重新启动才能生效,所有配置都可以平滑加 载,程序友好。也支持web操作界面,人机友好。 kangle的主配置文件为etc/config.xml,在3.1.1以前虚拟主机
kangle -r 可以在3311里面点重新加载配置文件 也支持编程接口的调用:reload config
配置文件顶层标签,其它指令都在config之下。
<config> 其它指令 </config> request和response
配置访问控制,请参考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\' /> lang
设置3311管理用的语言 使用中文
<lang>zh_CN</lang>
指明英语
<lang>en_US</lang> keep_alive
设置http长连接超时时间,单位秒,设置为0,则禁用http长连接(不建议).
<keep_alive>30</keep_alive> 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> 用于反向代理,建议设置为使用内存交换,否则碰到很大的下载,反应很慢。 用于本地应用,如fastcgi连php,建议设置临时文件,及大的改善后端压力。 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:kanglewww internal 是否为内部请求,默认是0,如为内部请求,则只有内部请求才有效。
例:
<alias path=\'/aa/\' to=\'D:projectkanglewww\'/> 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 这个运行身份,仅对扩展cmd和cgi且kangle进程要以超级用户运行才有效。即要启动子进程服务时的一个运行身份。
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
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28