科技 > 操作系统 > Windows

Windows系统下Apache HTTP Server 2.4安装与配置、运维手册

3人参与 2026-04-09 Windows

本文基于 apache 2.4 官方文档,完全适配 windows 系统,从安装、基础配置、监听绑定、虚拟主机、url 重写、ssl、缓存、日志、性能调优到安全加固,形成一份可直接落地的 windows 运维文档。

一、windows 下 apache 2.4 入门与安装

1.1 下载与环境说明

apache 官方不提供 exe 安装包,windows 版本以压缩包形式分发:

1.2 目录结构(windows 典型路径)

解压到无空格、无中文路径,例如:

c:\apache24\
├── bin\       httpd.exe、服务管理工具
├── conf\      主配置目录
├── htdocs\    默认网站根目录
├── logs\      日志目录
└── modules\   模块文件(*.so)

1.3 安装为 windows 服务

管理员身份打开 cmd,进入 bin 目录:

cd c:\apache24\bin

安装服务:

httpd -k install

启动服务:

httpd -k start

停止 / 重启 / 卸载:

httpd -k stop
httpd -k restart
httpd -k uninstall

验证安装:
打开浏览器,访问 http://localhost/。如果看到 "it works!" 的默认页面,就说明 apache 已经成功安装并运行了。

二、监听与绑定(bind)配置

文件:conf/httpd.conf

2.1 listen 指令(监听端口)

# 监听所有网卡 80 端口
listen 0.0.0.0:80
# 监听 ipv6
listen [::]:80
# 自定义端口
listen 8080
# https 监听
listen 443 https

2.2 servername 避免启动警告

servername localhost:80

三、主配置结构与配置段

3.1 核心路径配置(windows 路径用/或\\)

define srvroot "c:/apache24"
serverroot "${srvroot}"
documentroot "${srvroot}/htdocs"
<directory "${srvroot}/htdocs">
    options indexes followsymlinks
    allowoverride none
    require all granted
</directory>

3.2 常用配置段说明

示例:

<files ".env">
    require all denied
</files>

四、日志配置(logs)

4.1 错误日志

errorlog "${srvroot}/logs/error.log"
loglevel warn

报警级别: debug, info, notice, warn, error, crit,alert, emerg.

4.2 访问日志(通用 combined 格式)

logformat "%h %l %u %t \"%r\" %>s %b \"%{referer}i\" \"%{user-agent}i\"" combined
customlog "${srvroot}/logs/access.log" combined

日志文件默认在:

c:\apache24\logs\

五、url 映射(url mapping)

5.1 别名 alias

将 url中的/static 映射到 d 盘某目录:

alias "/static" "d:/web/static"
<directory "d:/web/static">
    require all granted
</directory>

5.2 脚本别名 scriptalias

scriptalias "cgi-bin"  "${srvroot}/cgi-bin/"
<directory "${srvroot}/cgi-bin/">
    require all granted
</directory>

5.3 默认首页

directoryindex index.html index.php index.htm

六、url 重写(mod_rewrite)

6.1 启用模块

loadmodule rewrite_module modules/mod_rewrite.so

6.2 常用规则示例

1)http 强制跳转 https

rewriteengine on
rewritecond %{https} off
rewriterule ^(.*)$ https://%{http_host}$1 [r=301,l]

注解:

补充:

1. url 的结构拆解

在 http 协议中,一个完整的 url 是这样的:
http://www.example.com:80/news/123.html

apache 在内部处理时,会把它拆分成不同的变量:

当你写 rewriterule ^(.*)$ ... 时,正则表达式 ^(.*)$ 匹配的对象仅仅是 uri/路径 部分。

2. 为什么后面又要写%{http_host}?

既然 ^(.*)$ 抓不到域名,那为什么我们在跳转目标里又要写 https://%{http_host}$1 呢?

💡 举例说明

假设你的域名是 example.com

2)伪静态 /path → index.php?path=

rewritecond %{request_filename} !-f
rewritecond %{request_filename} !-d
rewriterule ^(.*)$ index.php/$1 [l]

3)支持 .htaccess

是 apache web 服务器 的一种分布式配置文件。它允许你在不修改服务器主配置文件(如 httpd.conf)的情况下,直接控制该目录及其子目录下的网站行为。它在虚拟主机(共享主机)环境中非常流行,因为普通用户通常没有权限修改服务器的主配置,但可以通过上传 .htaccess 文件来实现各种高级功能。

.htaccess 的功能非常强大,最常见的用途包括:

<directory "${srvroot}/htdocs">
    allowoverride all
</directory>

七、虚拟主机(virtual hosts)

#include conf/extra/这个目录里是放什么的
conf/extra/ 目录是 apache 用来存放特定功能的扩展配置文件的地方。
简单来说,apache 的主配置文件 httpd.conf 就像一个总指挥部,而 conf/extra/ 目录就像是各个专项部门(如安保部、交通部、后勤部)的独立办公室。为了保持主配置文件的整洁和易读,apache 将一些复杂或特定功能的配置单独拆分出来,放在这个目录下。主配置文件通过 include 指令来调用它们。

7.1 启用配置

涉及conf/extra/ 目录,是 apache 用来存放特定功能的扩展配置文件的地方。为了保持主配置文件的整洁和易读,apache 将一些复杂或特定功能的配置单独拆分出来,放在这个目录下。主配置文件通过 include 指令来调用它们。

httpd.conf 中取消注释:

include conf/extra/httpd-vhosts.conf

7.2 httpd-vhosts.conf 示例

<virtualhost *:80>
    servername www.site1.com
    documentroot "c:/web/site1"
    errorlog "logs/site1-error.log"
    customlog "logs/site1-access.log" combined
</virtualhost>
<virtualhost *:80>
    servername www.site2.com
    documentroot "c:/web/site2"
    errorlog "logs/site2-error.log"
    customlog "logs/site2-access.log" combined
</virtualhost>

windows 本地测试需修改:

c:\windows\system32\drivers\etc\hosts

添加

127.0.0.1 www.site1.com
127.0.0.1 www.site2.com

八、ssl / https 配置

8.1 启用模块

loadmodule ssl_module modules/mod_ssl.so
loadmodule socache_shmcb_module modules/mod_socache_shmcb.so
include conf/extra/httpd-ssl.conf

8.2典型ssl配置

<virtualhost *:443>
    servername site.com
    documentroot "c:/web/site"
    sslengine on
    sslcertificatefile "c:/ssl/site.crt"
    sslcertificatekeyfile "c:/ssl/site.key"
    sslcertificatechainfile "c:/ssl/chain.crt"
    # 安全套件
    sslprotocol all -sslv3 -tlsv1 -tlsv1.1
    sslciphersuite high:!anull:!md5
</virtualhost>

九、缓存配置(caching)

9.1磁盘缓存

loadmodule cache_module modules/mod_cache.so
loadmodule cache_disk_module modules/mod_cache_disk.so
cacheenable disk /
cacheroot "c:/apache24/cache"
cachedirlevels 2
cachedirlength 1
cachedefaultexpire 3600

9.2 浏览器缓存(静态资源)

<filesmatch "\.(jpg|png|css|js|gif|ico)$">
    header set cache-control "max-age=86400"
</filesmatch>

需加载头模块

loadmodule headers_module modules/mod_headers.so

十、内容协商(content negotiation)

根据浏览器语言自动返回对应页面:

loadmodule negotiation_module modules/mod_negotiation.so
<directory "${srvroot}/htdocs">
    options +multiviews
</directory>

可放置:

apache 会自动匹配。

十一、动态模块 dso

windows 下所有扩展均为 dso 模式,通过 loadmodule 加载:

loadmodule deflate_module modules/mod_deflate.so
loadmodule expires_module modules/mod_expires.so
loadmodule rewrite_module modules/mod_rewrite.so

无需编译,直接启用即可。

十二、性能调优(windows 专用)

文件:conf/extra/httpd-mpm.conf

12.1 mpm winnt(windows 专属多处理模块)

<ifmodule mpm_winnt_module>
    threadsperchild 150
    maxconnectionsperchild 0
</ifmodule>

优化建议:

解释代码

2. threadsperchild 150

3. maxconnectionsperchild 0

总结与建议

这段配置的意思是:

“在 windows 系统下,apache 启动一个子进程,该进程同时开启 150 个线程来处理请求。并且,这个进程将永久运行,除非手动重启,不会因为处理了过多请求而自动重置。

apache的windows版本,它通常只启动一个子进程,与linux/unix系统下的apache有本质的区别。linux下apache启动父进程来管理多个子进程,window的apache的设计机制主进程负责管理服务和绑定端口,单个子进程(主进程启动唯一的子进程。多线程:这个子进程内部创建大量的线程)。

优化建议:

12.2 通用性能优化

hostnamelookups off
enablesendfile on
keepalive on
keepalivetimeout 3
timeout 10

启用 gzip 压缩:

addoutputfilterbytype deflate text/html text/plain text/css application/json

十三、安全加固(security tips)

13.1 隐藏版本号

servertokens prod
serversignature off

13.2 禁止访问敏感目录

<directory "${srvroot}/cgi-bin">
    require all granted
</directory>
# 默认拒绝所有
<directory />
    require all denied
    allowoverride none
</directory>

13.3限制请求大小

limitrequestbody 10485760

13.4禁止列目录

options -indexes

完整可直接粘贴的安全加固段(windows 专用)

你直接复制粘贴到 httpd.conf 末尾即可:

# ==============================
# 安全加固配置 security tips
# ==============================
# 隐藏版本号
servertokens prod
serversignature off
# 禁止根目录访问,提高安全性
<directory />
    require all denied
    allowoverride none
    options none
</directory>
# 禁止目录浏览
options -indexes
# 限制请求体大小(10mb)
limitrequestbody 10485760
# 禁止访问 .htaccess、.env 等敏感文件
<filesmatch "\.(htaccess|htpasswd|ini|phps|sql|bak|env|log)$">
    require all denied
</filesmatch>
# 关闭反向dns查询,提升速度+安全
hostnamelookups off
# 禁用符号链接(如不需要可开启)
# options -followsymlinks

四、修改后必须执行

管理员 cmd:

httpd -t

检查无误后重启(cmd):

httpd -k restart

如果你用了虚拟主机

虚拟主机里的安全规则写在:

c:\apache24\conf\extra\httpd-vhosts.conf

每个 <virtualhost> 内部都可以单独加权限控制。

14环境变量(env)

设置环境变量供脚本使用:

setenv app_env production
setenv path "c:/php"

十六、windows 常见问题排查

到此这篇关于windows系统下apache http server 2.4安装与配置、运维手册的文章就介绍到这了,更多相关windows apache2.4安装配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

Win11 23H2修复开始菜单搜索失效显示空白结果问题

04-09

18 项关键改进! 微软公布Win11 2026年重大更新路线图

04-09

3月紧急更新KB5085516导致Win11 25H2专业版窗口管理功能失效

04-08

看完这篇文章别说你不懂网络命令! Windows常用网络与系统命令汇总

04-08

微软放大招! 所有Windows镜像都将失效 强制执行阶段已到来

04-08

MessageUtils.message("user.jcaptcha.expire")问题及解决

04-08

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论