目录

. HTTPD(Apache)
. NGINX
. TENGINE
. JBOSS
. TOMCAT
. LIGHTTPD

1. HTTPD(Apache)

0x1: 启动参数

Usage: ./httpd [-D name] [-d directory] [-f file]
[-C "directive"] [-c "directive"]
[-k start|restart|graceful|graceful-stop|stop]
[-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S]
Options:
. -D name
define a name for use in <IfDefine name> directives,它配合配置文件中的<IfDefine>段,用于在服务器启动和重新启动时,有条件地跳过或处理某些命令 . -d directory
specify an alternate initial ServerRoot,为ServerRoot指令设置初始值为serverroot。它可以被配置文件中的ServerRoot指令所覆盖,其默认值是/usr/local/apache2 . -f file
specify an alternate ServerConfigFile,在启动中使用config文件的指令。如果config不是以/开头的文件名, 则它是相对于ServerRoot的一个路径。其默认值是conf/httpd.conf . -C "directive"
process directive before reading config files,在读取配置文件之前,先处理directive的配置 . -c "directive"
process directive after reading config files,在读取配置文件之后,再处理directive的配置 . -e level
show startup errors of level (see LogLevel),在服务器启动时,设置LogLevel为level。它用于在启动时,临时增加出错信息的详细程度,以帮助排错 . -E file
log startup errors to file,将服务器启动过程中的出错信息发送到文件file . -v
show version number,显示httpd的版本,然后退出 . -V
show compile settings,显示httpd的版本和编译参数, 然后退出 . -h
list available command line options (this page),输出一个可用的命令行选项的简要说明 . -l
list compiled in modules,输出一个编译在服务器中的模块的列表。它不会列出使用LoadModule指令动态加载的模块 . -L
list available configuration directives,输出一个指令的列表,并包含了各指令的有效参数和使用区域 . -t -D DUMP_VHOSTS
show parsed settings (currently only vhost settings),仅对配置文件执行语法检查。程序在语法解析检查结束后立即退出,或者返回0(Syntax OK),或责返回非0的值(Syntax Error)。如果还指定了-D DUMP_VHOSTS ,会显示虚拟主机配置的详细信息 . -S
a synonym for -t -D DUMP_VHOSTS,显示从配置文件中读取并解析的设置结果(目前仅显示虚拟主机的设置) . -t -D DUMP_MODULES
show all loaded modules . -M
a synonym for -t -D DUMP_MODULES . -t
run syntax check for config files,仅对配置文件执行语法检查。程序在语法解析检查结束后立即退出,或者返回0(Syntax OK),或责返回非0的值(Syntax Error)

0x2: WebRoot识别伪代码

. 枚举当前进程列表信息: 枚举/proc
) 进程对应的文件绝对路径: /proc/pid/exe
) 进程启动参数: /proc/pid/cmdline
. 确定webserver类型: 根据进程名进行判断
. 从进程的启动参数中获取配置文件的相关信息
) -f config
) -d ServerRoot
. 如果"-f config"配置文件参数字符串没找到,则/proc/pid/exe -V动态运行一次,显示编译信息
) -D HTTPD_ROOT="/opt/apache": 表明webroot路径
) -D SERVER_CONFIG_FILE="conf/httpd.conf": 表明配置文件相对路径
. 如果"-d ServerRoot"web路径参数字符串没找到,则根据"/proc/pid/exe"去掉路径中的最后2个分量,作为webserver的根目录,并拼接上"/conf/httpd.conf"作为配置文件路径
/*根据获取的配置文件路径,进行配置文件解析*/
. 解析配置文件,从中获得webroot的配置信息
) ServerRoot "/opt/apache"
) DocumentRoot(web文件路径) "/usr/web"
) Include conf/vhosts/*/*.conf: 配置文件中又引入了新的配置文件,进行递归解析
4) Alias /icons/ /usr/local/apache/icons/: 配置中出现的别名目录

Relevant Link:

http://httpd.apache.org/docs/2.2/mod/mod_alias.html#alias
http://httpd.apache.org/docs/current/mod/core.html#serveralias

2. NGINX

0x1: 启动参数

Tengine version: Tengine/2.1. (nginx/1.6.)
Usage: nginx [-?hvmVtdq] [-s signal] [-c filename] [-p prefix] [-g directives] Options:
. -?,-h
this help . -v
show version and exit,显示 nginx 的版本 . -V
show version, modules and configure options then exit,显示 nginx 的版本,编译器版本和配置参数 . -m
show all modules and exit . -l
show all directives and exit . -t
test configuration and exit . -d
dump configuration and exit,打印配置文件信息 . -q
suppress non-error messages during configuration testing . -s signal
send signal to a master process
) stop
) quit
) reopen
) reload
可以使用信号系统来控制主进程,主进程可以处理以下的信号
) TERM、INT: 快速关闭
) QUIT: 从容关闭
) HUP: 重载配置,用新的配置开始新的工作进程,从容关闭旧的工作进程
) USR1: 重新打开日志文件
) USR2: 平滑升级可执行程序
) WINCH: 从容关闭工作进程 . -p prefix
set prefix path (default: /usr/local/nginx/) . -c filename
set configuration file (default: conf/nginx.conf) . -g directives : set global directives out of configuration file

0x2: WebRoot识别伪代码

. 枚举当前进程列表信息: 枚举/proc
) 进程对应的文件绝对路径: /proc/pid/exe
) 进程启动参数: /proc/pid/cmdline
. 确定webserver类型: 根据进程名进行判断
. 从进程的启动参数中获取配置文件的相关信息
) -c </path/to/config>
) -p prefix
. 如果"-p prefix"前缀配置参数字符串没找到,则根据"/proc/pid/exe"+"/conf/nginx.conf"进行拼接,作为配置文件路径 . 如果在NGINX启动参数中没找到和配置文件有关的字符串,则/proc/pid/exe -d动态运行一次,打印出整个配置文件信息
....
. 解析配置文件,从中获得webroot的配置信息
) http:
1.1) 在http节点中搜索root关键字
1.2) 对include关键字进行检测,对引入的独立配置文件路径进行递归解析
) server:
2.1) 在server节点中搜索root关键字
2.2) 对include关键字进行检测,对引入的独立配置文件路径进行递归解析
) location(以\.php$结尾的location节点)
3.1) 解析FastCgi节点
3.1.) 搜索root关键字
3.1.) 解析fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name
3.1.) 解析$document_root
3.2) 搜索root关键字
3.3) location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ { alias /data/w3/images/$;}: 配置中出现的别名目录

Relevant Link:

http://www.nginx.cn/nginxchscommandline
http://wiki.nginx.org/ChsCommandLine
http://wiki.nginx.org/FullExample
http://www.ha97.com/5194.html
http://nginx.org/cn/docs/http/ngx_http_core_module.html#alias
http://www.886404.com/search?q=NGINX+%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6+Alias
http://wiki.nginx.org/ChsCommandLine

3. TENGINE

4. JBOSS

0x1: 启动参数

usage: run.sh [options] 

options:
. -h、--help
显示帮助信息 . -V、--version
显示版本信息 . -D<name>[=<value>]
设置系统属性,JBoss Bootstrap Environment
) JBOSS_HOME: /usr/java/jboss4
) JAVA: /usr/java/j2sdk/bin/java
) JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval= -Dsun.rmi.dgc.server.gcInterval=
) CLASSPATH: /usr/java/jboss4/bin/run.jar:/usr/java/j2sdk/lib/tools.jar . -d、--bootdir=<dir>
设置启动补丁目录的位置;必须是绝对路径或者url . -p、--patchdir=<dir>
设置补丁目录的位置,必须是绝对路径或者url . -n、--netboot=<url>
从指定的url网络位置启动 . -c、--configuration=<name>
指定服务器启动的配置(default、all、minimal) . -B、--bootlib=<filename>
将其它的jar包添加到bootclasspath的前面 . -L、--library=<filename>
将其它的jar包添加到loaders classpath . -C、--classpath=<url>
将其它的url添加到loaders classpath . -P、--properties=<url>
从指定的url加载系统属性 . -b、--host=<host or ip>
所有JBoss Service绑定的地址 . -g、--partition=<name>
HA分区的名称(缺省为DefaultDomain) . -u、--udp=<ip>
UDP的多播地址 . -l、--log=<log4j|jdk>
设置日志记录插件类型

0x2: WebRoot识别伪代码

. 枚举当前进程列表信息: 枚举/proc
) 进程对应的文件绝对路径: /proc/pid/exe
) 进程启动参数: /proc/pid/cmdline
. 确定webserver类型: 根据进程名进行判断
. 从进程的启动参数中获取WEB根目录
) -Djboss.home.dir=: 从设置的系统属性中提取WEB根目录
) -Djava.endorsed.dirs=: 从设置的系统属性中提取WEB根目录
//启动参数中获取的就已经是WEB根目录了

Relevant Link:

http://blog.csdn.net/icess_ma/article/details/1958363
http://wenku.baidu.com/link?url=zxv-P-A2VDHEGsuJY_IcdaMpsRYLGa7be9d4EaQeyMZUnbHHY62KzbTDCe3ux074KN-bvE8kUDmBOFvJ9v3cR5HK1ynAoByfISwmMpTCJFa

5. TOMCAT

0x1: 启动参数

Tomcat的启动参数位于tomcat的安装目录\bin目录下,Linux操作系统就是catalina.sh文件,Windows操作系统就是catalina.bat文件

. -server
一定要作为第一个参数,在多个CPU时性能佳  . -Xms
初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些 
. -Xmx
java heap最大值,使用的最大内存 
//上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半 . -XX:PermSize
设定内存的永久保存区域  . -XX:MaxPermSize
设定最大内存的永久保存区域  . -XX:MaxNewSize . -Xss  
这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值是512k
 
. +XX:AggressiveHeap 
会使得Xms没有意义。这个参数让jvm忽略Xmx参数,最大程度地消耗一个G物理内存、以及一个G的swap . -Xss:
每个线程的Stack大小  . -verbose:gc 
开启垃圾收集信息  . -Xloggc:gc.log 
指定垃圾收集日志文件  . -Xmn
young generation的heap大小,一般设置为Xmx的3、4分之一  . -XX:+UseParNewGC
缩短minor收集的时间  . -XX:+UseConcMarkSweepGC
缩短major收集的时间,此选项在Heap Size比较大而且Major收集时间较长的情况下使用更合适 . -Dcatalina.home="C:\ApacheGroup\Tomcat 5.0"  
HOME目录 . -Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 5.0\common\endorsed"
ENDORSED目录

0x2: WebRoot识别伪代码

. 枚举当前进程列表信息: 枚举/proc
) 进程对应的文件绝对路径: /proc/pid/exe
) 进程启动参数: /proc/pid/cmdline
. 确定webserver类型: 根据进程名进行判断
. 从进程的启动参数中获取配置文件的相关信息
) -Dcatalina.home=
. 如果在NGINX启动参数中没找到和配置文件有关的字符串,则/proc/pid/exe+"/conf/server.xml"拼接出tomcat的默认配置文件路径
....
. 解析配置文件,从中获得webroot的配置信息,这是一个xml文件,需要进行层次解析
Server -> Service -> Engine -> Host(循环遍历所有Host节点) -> 属性appBase对应的值/或者属性docBase对应的值就是对应的WEB ROOT路径

Relevant Link:

http://wenku.baidu.com/view/fa4f0118964bcf84b9d57b06.html
http://blog.csdn.net/huoyunshen88/article/details/8731937
http://blog.csdn.net/lifetragedy/article/details/7708724

6. LIGHTTPD

0x1: 启动参数

lighttpd/1.4. (ssl) (Mar   ::) - a light and fast webserver
usage:
. -f <name>
filename of the config-file . -m <name>
module directory (default: /usr/lib64/lighttpd) . -p
print the parsed config-file in internal form, and exit . -t
test the config-file, and exit . -D
don't go to background (default: go to background) . -v
show version . -V
show compile-time features . -h
show this help

0x2: WebRoot识别伪代码

. 枚举当前进程列表信息: 枚举/proc
) 进程对应的文件绝对路径: /proc/pid/exe
) 进程启动参数: /proc/pid/cmdline
. 确定webserver类型: 根据进程名进行判断
. 从进程的启动参数中获取配置文件的相关信息
) -f config
. 如果"-d ServerRoot"web路径参数字符串没找到,则根据"/proc/pid/exe"去掉路径中的最后2个分量,作为webserver的根目录,并拼接上"conf/lighttpd.conf"作为配置文件路径
/*根据获取的配置文件路径,进行配置文件解析*/
. 解析配置文件,从中获得webroot的配置信息
) server.document-root = server_root + "/lighttpd": 进行变量回溯解析,获取WEB根目录
) include "conf.d/access_log.conf": 配置文件中又引入了新的配置文件,进行递归解析
//lighttpd 不支持include * 通配符路径 和 entiry directory

Relevant Link:

http://linux.chinaunix.net/techdoc/net/2009/06/18/1119096.shtml

Copyright (c) 2014 LittleHann All rights reserved

Linux WebServer WebRoot Path Identification的更多相关文章

  1. Linux下修改PATH的方法

    Linux下修改PATH的方法 1.直接在命令行里敲 PATH=$PATH:/path1:/path2:/pathN用户登出之后PATH恢复原样. 只是临时起作用. 2.修改~目录下bash_prof ...

  2. Ubuntu Linux 环境变量PATH设置

    前俩天编译linux下rar解压软件的时候说找不到  /usr/local/linux 路径,在设定path变量的时候,忽然就想看看,path最原始的变量值是多少....(在环境变量文件中保存.... ...

  3. linux常用命令---PATH与防火墙

    linux的路径PATH 防火墙

  4. Linux系统修改PATH环境变量方法

    在Linux安装一些软件通常要添加路径环境变量PATH.PATH环境变量通俗的讲就是把程序的路径"备案"到系统中,这样执行这些程序时就不需要输入完整路径,直接在bash输入程序名就 ...

  5. linux 环境变量PATH路径的三种方法

    转:http://www.jb51.net/LINUXjishu/150167.html 总结:修改1.#PATH=$PATH:/etc/apache/bin  或者#vi /etc/profile ...

  6. Linux常用指令---$PATH (环境变量)

    实例一:设置临时环境变量 在linux服务器上设置临时环境变量,当退出shell环境时,自动销毁 export JAVA_HOME=/usr/java/jdk1.6.0_32 export class ...

  7. linux增加自定义path和manpath

    linux安装软件到自定义路径时,新安装的命令需要带上路径才可以执行,不能像系统自带命令那样可以直接使用. 这个时候可以通过修改环境变量PATH和MANPATH,来实现像系统命令一样使用新安装的命令并 ...

  8. linux下修改path变量(转载)

    比如要把/etc/apache/bin目录添加到PATH中 1.#PATH=$PATH:/etc/apache/bin 使用这种方法,每当登出PATH就会恢复 2.#vi /etc/profile 在 ...

  9. linux下添加PATH环境变量

    添加PATH环境变量,第1种方法:[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@lx ...

随机推荐

  1. Windows 提高效率的常用快捷键

    开发中减少使用鼠标次数,是一个很cool的体验!下面的快捷键在Win7上测试有效 快捷键 说明 Ctrl+Shift+N 创建一个新的文件夹. (Ctrl + N  打开桌面) Ctrl+Shift+ ...

  2. Jenkins进阶系列之——17Jenkins升级、迁移和备份

    升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...

  3. RabbitMQ集群环境搭建-4

    确保成功安装好JDK,erlang,RabbitMQ等,并且RabbitMQ能正常启动,多台电脑之间能互相ping得通. 1. 安装 erlang.rabbitmq 如: 192.168.1.1.19 ...

  4. css+div 浮动分块

    前段时间学过几天html,只是怀着了解的态度,能够读懂别人的页面,能够扒现成就行,一直没有自己动手去实践过,其实也不是没有实践过,前段时间扒了一个网页,想按照自己的要求来改,可后果是越改越乱.今天心血 ...

  5. Matlab 的reshape函数

    看Matlab的help文档讲得不是清楚. 先给上一段代码: >> a=[1 2 3;4 5 6;7 8 9;10 11 12]; >> b=reshape(a,2,6); 这 ...

  6. 服务端JavaScript之Rhino

    最近在看js的书,书上有介绍两个服务端js,以前只听说过node.js,第一次听说Rhino.js,并且已经集成到了jdk1.6;看来还是见的少啊! Rhino是一种用Java编写的javaScrip ...

  7. hiho一下 第六十六周

    题目链接:这是一道水爆了的广搜题 #include<iostream> #include<stdio.h> #include<algorithm> #include ...

  8. 20 seq 某个数到另外一个数之间的所有整数

    seq命令Shell内建命令 seq命令用于产生从某个数到另外一个数之间的所有整数. 语法 : seq [选项]... 尾数 seq [选项]... 首数 尾数 seq [选项]... 首数 增量 尾 ...

  9. LVS+MYCAT+读写分离+MYSQL主备同步部署手册

    LVS+MYCAT+读写分离+MYSQL主备同步部署手册 1          配置MYSQL主备同步…. 2 1.1       测试环境… 2 1.2       配置主数据库… 2 1.2.1  ...

  10. tomcat 的安全规范

    下面来说一下,日常工作当中我们需要注意的一些tomcat的安全规范: 一:telnet管理端口的保护 类别 配置内容及其说明 标准配置 备注 Telnet 管理端口的保护 (强制) (1)配置文件中的 ...