文章目录
基于XAMPP Version 8.1.6中Apache的默认配置,对常用配置项进行解析说明:
httpd.conf
是Apache服务器的主配置文件,Apache的绝大多数功能都在此文件配置,httpd-ssl.conf
、httpd-vhosts.conf
等作为模块化功能配置文件,在httpd.conf
中以Include形式添加,以简化主配置文件,同时便于对模块化功能进行配置。
(一) httpd.conf
Windows下默认路径:%install_path%\xampp\apache\conf\httpd.conf
,具体配置指令解释可参考 Apache官方文档 📖
注意以下几点:
- 默认的相对路径为服务器根目录,如当服务器根目录为"/usr/local/apache2"时,“logs/access_log"就等同于”/usr/local/apache2/logs/access_log",为避免混淆,建议始终使用绝对路径进行配置
- 注意文件路径必须使用正斜杠而不是反斜杠,如 “c:/apache”,而不是"c:\apache",且不要在目录路径的末尾添加斜杠
- 配置命令和XML标签英文字符大小写不敏感
服务器根目录
# 定义服务器根目录,也是默认安装目录
# 是保存服务器配置文件、日志和错误信息的目录,注意与网站根目录区分开
Define SRVROOT "C:/xampp/apache"
ServerRoot "C:/xampp/apache"
服务监听端口
# 定义服务监听端口
# 可通过绑定监听端口的IP避免本机所有IP地址同时开启监听,如 Listen <IP>:80
# Listen 80 或 Listen 0.0.0.0:80 或 Listen *:80 代表本机所有IP都开启端口监听
# Listen 127.0.0.1:80 或 Listen localhost:80 代表只在本地环回地址上监听端口,这样服务就只能从本地访问
Listen 80
加载动态共享对象
# 加载动态共享对象(DSO)模块,这里省略注释掉的模块
# 已编译的DSO模块存放在Apache安装目录下的modules目录中
# DSO类似于动态链接库,用于在程序运行时动态加载功能模块的代码
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule status_module modules/mod_status.so
LoadModule version_module modules/mod_version.so
服务运行权限
# IfModule是条件配置,只有当后边的模块被加载时配置内容才生效
# 当unixd_module模块被加载时,标签内配置生效
<IfModule unixd_module>
# 定义运行httpd服务的用户/用户组
# 在Linux中默认用户/用户组是类似www-data、daemon的nologin低权限用户
# 这些用户/用户组在创建服务或系统时就已自动创建
# 但是在Windows中默认用户/用户组是运行程序的用户 (一般是管理员或SYSTEM)
User daemon
Group daemon
</IfModule>
联系方式和服务器名
# 这些配置为虚拟主机<VirtualHost>配置的默认值
# 如有相同的配置项则将被<VirtualHost>中的配置覆盖
# 服务器管理员联系邮箱,该信息将会显示在一些输出信息中,比如返回给客户端的错误信息
ServerAdmin postmaster@localhost
# 服务器绑定的域名和端口,用于标识服务器名称
# 如果没有域名可以用IP或localhost标识,不配置该项启动服务时会发出警告信息
ServerName localhost:80
系统目录访问权限
# 目录及其子目录设置访问权限
# 默认配置禁止访问主机文件系统,因此其他允许访问的目录要在下方配置
<Directory />
# AllowOverride用于配置是否允许使用.htaccess文件中的配置覆盖当前配置生效
# 有以下5种选项
# All: 允许使用
# None: 不允许使用,.htaccess文件配置将被忽略
# FileInfo: 允许使用文件控制类型的配置指令,包括:AddEncoding, AddLanguage, AddType, DEfaultType, ErrorDocument, LanguagePriority等
# AuthConfig: 允许使用认证类型的配置指令,包括:AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthTypeAuthUserFile, Require等
# Indexes: 允许使用控制目录索引的配置指令,包括:AddDescription, AddIcon, DirectoryIndex, HeaderName, IndexIgnore, IndexOptions等
# Limit: 允许使用权限控制类型的配置指令,包括:Allow, Deny和Order
AllowOverride none
# Require用于配置访问权限
# 常见的配置如下
# Require all denied: 拒绝所有访问请求,也是Require缺省配置