首页 > 代码库 > apache基础

apache基础

一、apache配置

ServerRoot "/etc/httpd"

#你的apache软件安装的位置。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录

Listen 80

#服务器监听的端口号

Include conf.modules.d/*.conf

#apache模块存放的路径

User apache

Group apache

#apache默认执行用户及用户组

ServerAdmin root@localhost

#管理员的电子邮件,在错误页面会展示给用户

ServerName 192.168.2.77:80

#默认是不需要指定的,服务器通过名字解析过程来获得自己的名字。

#可以把www.example.com:80修改为自己的域名或者直接修改为 localhost,也可以指定IP 地址,

DocumentRoot "/var/www/html"

#网页的目录


<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

#fModuole标签其作用是先检查当前模块是否已经加载,若已经加载,则标签中的配置有效,若没有加载,则标签中的配置无效。

#默认索引页面是index.html

AddDefaultCharset UTF-8

#设置编码类型

<IfModule mime_magic_module>

    MIMEMagicFile conf/magic

</IfModule>

#通过读取部分文件内容自动猜测文件的MIME类型

#它被作为当mod_mime无法解析时,用来处理的"第二道防线"

#如果它被使用,会显著影响服务器的性能

EnableSendfile on

#使用操作系统内核的sendfile支持来将文件发送到客户端,

IncludeOptional conf.d/*.conf


二、Directory标签配置介绍

<Directory "/var/www/html">

    Options Indexes FollowSymLinks

    AllowOverride None

    Require all granted

Order allow, deny

</Directory>

使用<Directory 目录路径>和</Directory>这对语句为主目录或虚拟目录设置权限,它们是一对容器语句,必须成对出现,它们之间封装的是具体 的设置目录权限语句,这些语句仅对被设置目录及其子目录起作用

(1)Options

Options选项用于定义目录使用哪些特性,包括Indexes、MultiViews和ExecCGI等

Indexes 允许目录浏览,Apache以超文本形式返回目录中的文件和子目录列表

MultiViews 允许内容协商的多重视图MultiViews其实是Apache的一个智能特性。当客户访问目录 中一个不存在的对象时,如访问“http://192.168.16.177/icons/a”,则Apache会查找这个目录下所有a.*文件。由于 icons目录下存在a.gif文件,因此Apache会将a.gif文件返回给客户,而不是返回出错信息

All  All包含了除MultiViews之外的所有特性,如果没有Options语句,默认为All

ExecCGI 允许在该目录下执行CGI脚本

FollowSymLinks 可以在该目录中使用符号连接(软连接)

Includes 允许服务器端包含功能,准许SSI

IncludesNoExec  允许服务器端包含功能,但禁用执行CGI脚本

SymLinksIfOwnerMatch    在该目录中仅仅跟踪本站点内的链接


(2)AllowOverride None

AllowOverride选项用于定义位于每个目录下.htaccess(访问控制)文件中的指令类型。基于安全和效率的原因,虽然可以通 过.htaccess来设置目录的访问权限,但应尽可能地避免使用.htaccess文件,所以一般将AllowOverride设置为”None”,即 禁止使用.htaccess文件,而将目录权限的设置放在主配置文件httpd.conf的

(3)设置缺省的访问权限与Allow和Deny语句的处理顺序

Order deny ,allow 先执行deny后执行allow,除了deny禁止,其他都可以访问

例1:由于Allow语句覆盖了Deny语句,因此这3条语句是允许所有客户的访问

Order deny ,allow

Allow from 192.168.16.0/24

Deny from 192.168.16.111

例2:仅允许来自网络192.168.16.0/24客户机的访问,但IP地址为192.168.16.111的客户机除外

Order allow,deny

Allow from 192.168.16.0/24

Deny from 192.168.16.111


三、Files标签

<Files>指令提供了基于文件名的访问控制,类似于<Directory>和<Location>指令

<Files ".ht*">

    Require all denied

</Files>


四、Location网络空间容器

下例中的配置会拒绝对任何以"/private"开头的URL路径的访问

<Location /private>

Order Allow,Deny

Deny from all

</Location>

当指令应该作用于文件系统时,总是用<Directory>或<Files>;而当指令作用于不存在于文件系统的对象时,就用<Location>


五、日志格式

ErrorLog "logs/error_log"

#错误日志存放路径

LogLevel warn

#收集日志级别

<IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>

      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    </IfModule>

    CustomLog "logs/access_log" combined

</IfModule>

#定义日志格式


六、Alias,ScriptAlias映射

<IfModule alias_module>

    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

</IfModule>

#任何以/cgi-bin/开头的资源都将映射到/var/www/cgi-bin/目录中,且视之为CGI程序

<Directory "/var/www/cgi-bin">

    AllowOverride None

    Options None

    Require all granted

</Directory>

#ScriptAlias和Alias都是映射,只是ScriptAlias映射的文件视为CGI程序


七、MIME类型

<IfModule mime_module>

    TypesConfig /etc/mime.types   #指定MIME类型映射文件

    AddType application/x-compress .Z

    AddType application/x-gzip .gz .tgz  #增加.Z .tgz等类型映射

    AddType text/html .shtml

    AddOutputFilter INCLUDES .shtml

</IfModule>

#如果访问.mp4文件,apache将无法处理。 添加AddType video/mp4 mp4重启后就能够播放


八、虚拟主机

基于域名的虚拟主机

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.domain.tld

ServerAlias domain.tld *.domain.tld

DocumentRoot /www/domain

</VirtualHost>

基于IP的虚拟主机

<VirtualHost 192.168.1.11:80>

  ServerName www.test1.com

  DocumentRoot /www/test1/

  <Directory "/www/test1">

     Options Indexes FollowSymLinks

     AllowOverride None

     Order allow,deny

     Allow From All

   </Directory>

</VirtualHost>


基于端口的虚拟主机

Listen 8080

<VirtualHost 192.168.1.10:8080>

    DocumentRoot /var/www/test2

    ServerName www.test2.com

</VirtualHost>


九、代理服务器

反向代理

<VirtualHost *:80>

ServerAdmin test@test.com 

ServerName www.test.com

ProxyRequests Off

<Proxy *>

Order deny,allow

Allow from all

</Proxy>

ProxyPass / http://192.168.2.2:8000/

ProxyPassReverse / http://192.168.2.3:8000/

</VirtualHost>


正向代理

<IfModule mod_proxy.c>

ProxyRequests On

<Proxy 192.168.2.4:80>

   Order deny,allow

   Deny from all

   Allow from all

</Proxy>

</IfModule>

 其中192.168.2.4:80 为代理服务器的ip地址和端口


本文出自 “宁静致远” 博客,请务必保留此出处http://irow10.blog.51cto.com/2425361/1909675

apache基础