zoukankan      html  css  js  c++  java
  • Apache服务器配置

    注:此文复制而来,只为便于学习!

    Apache的配置指令分为两类:一类由核心模块如core,http等使用,必须位置httpd.conf文件中,另一类由标准或三方模块使用

    1 基本配置指令

    httpd.conf中的配置可以三为分部分:主服务器部分、容器配置部分、扩展部分

    主服务器部分:用来配置服务的核心参数,作为全局指令,如定义主机名、监听端口等

    容器配置部分:以<容器名>...</容器名>样式包围的配置部分,如虚拟主机、目录、文件权限

    扩展部分:以include方式加载的外部配置文件

    1.1 主服务器配置

    ServerName  定义主机名,若无,则以IP地址代替

    ServerRoot    定义httpd服务器进程所安装在的根目录,在选择不同的layout时,其值是不同的

    DocumentRoot  定义提供页面文档的根目录,此目录是收到URL请求的根目录,必须用绝对路径,若路径中包含空格则需要加引号

    ServerAdmin    指定网站管理员的邮件地址

    Alias/ScriptAlias  定义别名

    User/Group     指定服务器进程运行的用户名及组

    Listen               指定服务器监听的端口

    LoadModule/LoadFile   加载模块或目标文件

    ErrorDocument   code  content  指定错误码的处理页面或内容,页面可以是脚本或字符串

    Options      用于指定在目录的处理特性,其有以下值,这些值可以通过+ -来组合

                        ExecCGI  允许当前目录下执行CGI脚本

                        Includes  允许使用SSI功能

                        Indexes    开户索引功能,即目录若没有由DirecotryIndex指令指定索引文件,则返回请求目录的文件列表

                        FollowSymLinks   允许目录使用符号链接

                        ALL           除MultiViews之外 的所有特性

                       MultiViews  启用mod_negotiations模块提供的多视图功能

    1.2 容器配置部分

    值得注意的是容器配置可以根据需求嵌套。

    <ifModule !模块名>  判断module是否加载,并根据真假决定是否执行容器内配置,模块名可以加!表示未加载 

    <ifDefine Def>         判断Def是否定义,并根据真假决定是否执行容器内配置,Def前加!表示未定义

    <Directory dir>        区域中的配置仅对dir生效,用来限定配置范围或覆盖全局配置。目录可以是完整路径,也可以是通配符匹配目录,需要注意的是* ? []不能跨/

                                  如果需要使用正则匹配,则在表达式前加 ~

    <DirectoryMatch>    同上,只是其接受正则表达式时,不需要加~

    <File>                    只针对文件定义

    <FileMatch>           同上

    <Location>             对网络URL进行访问控制

    <LocationMatch>    同上,可接受正则匹配

    需要注意的地方是,容器规则在应用时是有优先级的,apache处理是从优先级高到低如下处理:direcotry .htacess direcotryMatch file fileMatch Location 高优先级规则会使得低优先级规则失效。同时Directory容器处理顺序按目录名称的字典排序进行。这些规则混用或使用不当会造成安全性问题,因此不建议使用复杂的规则。 对于文件和目录在使用时要注意限制符号链接。

    1.3 扩展部分 

    在Apache默认配置文件夹中有一个extra目录,其中定义了其他模块的常用配置,可以通过Include指令加载进来

    常见的配置功能如下

    httpd-autoindex.conf    自动索引配置

    httpd-info.conf             mod_status info模块的配置

    httpd-mpm.conf           mpm的配置

    httpd-ssl.conf              ssl配置

    httpd-userdir.conf        用户目录配置,用于在一台服务器上为多个用户提供Web站点,将用户映射到其自己的目录下

    httpd-vhosts.conf         虚拟主机配置

    1.3.1 mod-dir

    此模块支持用户指定index文件的功能,配置如下:

    DirectoryIndex   index.html  index.PHP

    这样,当用户访问根目录时,若下面存在对应的文件,则服务器会重给用户重定向到索引文件页面

    1.3.2 mod-autoindex

    1.3.3 mod-userdir

    1.4 配置工具

    本地化工具webmin需要安装到本地,并通过网页打开,可以进行GUI方式的设置

    windows下zecos Apacheconf可以SSH方式读取远程HTTPD.CONF来显示配置

    2 虚拟主机配置

    虚拟主机可以让我们在一个机器上开放多个网站,实现通过不同的域名或IP访问时定向到不同的网站页面上。

    2.1 命名虚拟主机

    基于域名的虚拟主机功能开启后,服务器可以根据请求中的HOST头部来定向到不同的站点,需要DNS配置协作方可应用。

    其配置比较简单,下面的示例为一个简单的例子

    [html]
    1. #  
    2. # Use name-based virtual hosting.  
    3. #  
    4. NameVirtualHost *:80  
    5. #  
    6. # VirtualHost example:  
    7. # Almost any Apache directive may go into a VirtualHost container.  
    8. # The first VirtualHost section is used for requests without a known  
    9. # server name.  
    10. #  
    11. <VirtualHost *:80>  
    12.     ServerAdmin webmaster@dummy-host.example.com  
    13.     DocumentRoot /www/docs/dummy-host.example.com  
    14.     ServerName dummy-host.example.com  
    15.     ServerAlias dummy1.example.com  
    16.     ErrorLog logs/dummy-host.example.com-error_log  
    17.     CustomLog logs/dummy-host.example.com-access_log common  
    18. </VirtualHost>  


    这里建立了一个网站,其监听本地所有80的请求,但此虚拟主机只提供关于dummy.example.com的网站服务,由于采用了别名,也可以采用别名来访问,但前提是配置了DNS的相关记录。需要注意的是,如果采用IPV6地址,则地址应该放在中括号中。

    基于命名的虚拟主机不支持HTTP1.0以及之前的协议,并且不支持SSL协议 (SSL协议需要独立的主机名与IP匹配)。若需要支持SSL,则需要监听443端口,并在此端口上建立站点服务。具体可以参考httpd_ssl.conf文件的示例。

    2.2 IP虚拟主机

    IP虚拟主机需要我们的服务器主机配置多个IP地址,我们将不同的网站配置到不同的IP地址上,IP地址可以是同一个物理网卡的多个虚拟接口地址。

    其配置方式如下:

    [html] 
    1. <VirtualHost 192.168.0.2:80>  
    2.     ServerAdmin postmaster@dummy-host2.localhost  
    3.     DocumentRoot "D:/xampp/htdocs/dummy-host2.localhost"  
    4.     ServerName dummy-host2.localhost  
    5.     ServerAlias www.dummy-host2.localhost  
    6.     ErrorLog "logs/dummy-host2.localhost-error.log"  
    7.     CustomLog "logs/dummy-host2.localhost-access.log" combined  
    8. </VirtualHost>  


    2.3 动态虚拟主机的方法

    其他的方法如通过vhost_alias_module模块或者rewrite_module建立大量虚拟主机,一般网站提供商才会用到这种功能,不在此详细描述,可以参考apache的相关文档。

    3  性能相关配置

    4 日志控制

  • 相关阅读:
    1.IntelliJ IDEA搭建SpringBoot的小Demo
    etc目录名字的意思---挖Linux中的古老缩略语
    CI当开启URL重写的时候,报错500 Internal Server Error
    app后端架构设计(转)
    Redis安装及主从配置
    ***Linux文件夹文件创建、删除、改名
    Redis中常用命令
    linux上ln链接命令详细说明
    Redis快速入门:安装、配置和操作
    redis的PHP扩展包安装方法
  • 原文地址:https://www.cnblogs.com/xgwshen/p/7083862.html
Copyright © 2011-2022 走看看