1. <VirtualHost> 和 </VirtualHost>
虚拟主机的关键指令:
语法: <VirtualHost IP地址[:端口号] [IP地址 [:端口号] ] ...> ... </VirtualHost> eg: <VirtualHost *:80> 表示监听本机所有IP地址的80端口。 <VirtualHost 192.168.1.10:8080> 表示监听192.168.1.10的8080端口。 2. ServerAdmin指令 用于指定站长的E-mail地址。当用户访问出现错误,Apache将会显示这这个E-mail地址。 3.DocumentRoot指令 用来指定网站的根目录。一般设置为绝对路径;否则,Apache将认为它的父目录是ServerRoot指令所定义的路径。 eg: DocumentRoot /var/www/xiebo.test.com 4. <Directory></Directory>指令 他们中间包含的指令,仅对指定的目录有效 ;(这里的目录,还支持通配符和正则表达式,用来匹配很多目录 ) 5. Option指令 用来配置指定目录的特性,比如是否允许目录下有符号链接,是否使用CGI等。这些特征包括: ALL : 除MultiViews之外的所有特征(默认设置); ExecCGI :允许该目录通过mod_cgi运行CGI脚本; FollowSymLinks : 允许在此目录中使用符号链接; Indexes :在该目录中允许使用mod_include进行服务器端包含; IncludesNoEXEC : 允许服务器端包含,但禁用“#exec cmd" 和 ”#exec cgi“ ; Indexes :允许列目录,如果某个被访问的目录中没有DirectoryIndex指定的文件(如index.html),那么服务器将生成并显示目录列表; MultiViews : 允许”内容协商“的”多重视图“。”内容协商“由mod_negotiation模块生成; SymLinksIfOwnerMatch : 只允许使用这样的符号链接:这些符号链接与目标目录(或文件)的拥有者具有相同的UserID。 在Option指令中,可以使用加减号(+或-),如果所有作用于Option指令的选项前都有” +“或”-“号,则此可选项将被合并----所有带”+“号的选项将强制覆盖当前的设置,而所有带”-“号的选项将强制从当前设置中去除。 6.AllowOverride指令 (仅在不包含正则表达式的<Directory>配置段中才有效。) 该指令是针对.htaccess文件的;可以允许该文件的全部指令,也可以只允许某些类型的指令,或者全部禁止。语法为: AllowOverride All | None | directive-type [directive-type] ... Apache本来的默认值是AllowOverride All (允许.htaccess的全部指令),但是出于安全考虑,Ubuntu将其改为了AllowOverride None(直接忽略.htaccess文件)。 AllowOverride后面除了All和None,还可以定义指令类型,这些类型有:AuthConfig,FileInfo,Indexes和Limit。 7. Order指令 (参照Allow和Deny指令,会增进对本指令的理解) 用来控制默认访问状态,以及Allow和Deny指令的生效顺序。 如果是”Deny,Allow“,那么Deny指令在Allow指令之前被评估,默认允许所有访问。 任何不匹配Deny指令或者匹配Allow指令的访问者都被允许访问。 如果是”Allow,Deny",那么Allow指令在Deny指令之前被评估,默认拒绝所有访问,任何不匹配Allow指令或者匹配Deny指令的访问都将被禁止访问。 8. Allow 指令 用来控制哪些主机可以访问,可以根据主机名,IP地址,IP范围或其他环境变量的定义来进行控制。语法: Allow from all | host | env=env-variable [host | env=env-variable]... eg: Allow from all 允许所有主机访问 Allow from .net example.edu 一个(部分)域名 Allow from 192.168.1.2 192.168.1.10 完整IP地址 Allow from 10 172.20 192.168.1 部分IP地址(IP地址的开始1-3个字节,用于子网限制) Allow from 10.1.0.0/255.255.255.0 网络/掩码对 Allow from 10.1.0.0/24 网络/nnn (CIDR形式) 9. Deny指令 用来限制主机访问的,其语法和参数与Allow指令完全相同; 10. ErrorLog指令 指定了错误日志的位置。通常情况下,只需要写明日志文件的路径即可: ErrorLog ${APACHE_LOG_DIR}/error.log 其中, ${APACHE_LOG_DIR}变量是在envvars这个配置文件中设置的,它指向/var/log/apache2 . 你也可以让Apache将错误信息交给某个命令去处理,而不是写入一个文件;要这样做只需要开头写一个管道符号“|”,后面跟命令的路径即可,eg : ErrorLog “| /usr/local/bin/httpd_errors" 11. LogLevel指令 用来控制日志的详细程度的级别。按照由粗到细的顺序,这些级别有: emerg :紧急(系统无法使用); alert : 必须立即采取措施 crit : 致命错误 error :错误情况 warn : 警告情况 notice : 一般重要情况 info : 普通信息 debug : 调试信息 每个级别所输出的信息都会包含上一级别的信息,比如说,如果设置为LogLevel info,那么所有notice和warn级别的信息都会被记录 . 12.CustomLog指令 定义了访问日志的路径和格式,语法如下: CustomLog file | pipe format | nickname [env=[!]environment-variable] 指令的第1个参数,可以是日志文件的路径,也可以是管道(用某个程序来处理日志信息,语法和ErrorLog相同,也是管道符”|“后面跟着一个程序的路径); 指令的第2 个参数 ,则是格式,这个格式既可以是由LogFormat指令所定义的nickname,也可以是按日志格式的规则定义的格式字符串。 以下两组设置,分别使用nickname和格式字符串,其结果是完全一样的: #使用nickname LogFormat "%h %l %u %t \"%r\" %>s %b" common CustomLog ${APACHE_LOG_DIR}/access_log common #使用格式字符串 CustomLog ${APACHE_LOG_DIR}/access_log "%h %l %u %t \"%r\" %>s %b" 13. ServerSignature指令 用来定义服务器所生成页面的脚本,这些页面包括错误信息,mod_proxy的ftp目录列表,mod_info的输出等。 如果设置为ServerSignature Off,那么服务器生成的网页底端不会有附加信息,如果设置为ServerSignature On,那么在某些情况下(比如目录列表),服务器生成的网页的底部会有类似这样的信息: Apache/2.4.7 (Ubuntu) server at xiebo.test.com port 8899 如果设置为ServerSignature Email,则会在上述信息的基础上,给域名加上E-Mail的链接,指向你在ServerAdmin指令中定义的E-mail地址。 14. Alias指令 该指令有点像Linux的Ln命令,它提供路径别名,让你用起来更方便。通过该指令,即使某个目录(或文件)不在DocumentRoot所设置的路径下,也可以通过Alias指令令其可以访问。语法: Alias URL-path file-path | directory-path eg: Alias /doc/ "/usr/share/doc/" 将/usr/share/doc/映射成网站的/doc/ 。
<VirtualHost *:8899>
ServerAdmin webmaster@localhost
ServerName xiebo.test.com
DocumentRoot /var/www/xiebo.test.com
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/xiebo.test.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
|
Apache虚拟主机配置
最新推荐文章于 2020-06-16 00:29:55 发布