Best use case
apache is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Apache HTTP Server 配置
Teams using apache should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/apache/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How apache Compares
| Feature / Agent | apache | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Apache HTTP Server 配置
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Apache 配置
## 概述
Apache HTTP Server 配置、虚拟主机、模块管理等技能。
## 基础管理
### 服务控制
```bash
# CentOS/RHEL
systemctl start httpd
systemctl stop httpd
systemctl restart httpd
systemctl reload httpd
# Ubuntu/Debian
systemctl start apache2
systemctl stop apache2
systemctl restart apache2
systemctl reload apache2
# 配置测试
apachectl configtest
httpd -t
```
### 配置文件
```bash
# CentOS/RHEL
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/*.conf
# Ubuntu/Debian
/etc/apache2/apache2.conf
/etc/apache2/sites-available/
/etc/apache2/sites-enabled/
# 日志
/var/log/httpd/ # CentOS
/var/log/apache2/ # Ubuntu
```
### 模块管理
```bash
# Ubuntu/Debian
a2enmod rewrite # 启用模块
a2dismod rewrite # 禁用模块
a2ensite example.conf # 启用站点
a2dissite example.conf # 禁用站点
# CentOS/RHEL
# 编辑 /etc/httpd/conf.modules.d/
httpd -M # 列出已加载模块
```
## 虚拟主机
### 基于域名
```apache
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example
<Directory /var/www/example>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>
```
### HTTPS 配置
```apache
<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/example
SSLEngine on
SSLCertificateFile /etc/ssl/certs/example.crt
SSLCertificateKeyFile /etc/ssl/private/example.key
SSLCertificateChainFile /etc/ssl/certs/chain.crt
# SSL 优化
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder off
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
# HTTP 重定向
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
```
## 反向代理
### 基础代理
```apache
# 启用模块
# a2enmod proxy proxy_http
<VirtualHost *:80>
ServerName api.example.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
# 超时设置
ProxyTimeout 300
</VirtualHost>
```
### 负载均衡
```apache
# 启用模块
# a2enmod proxy_balancer lbmethod_byrequests
<Proxy "balancer://mycluster">
BalancerMember http://192.168.1.10:8080
BalancerMember http://192.168.1.11:8080
ProxySet lbmethod=byrequests
</Proxy>
<VirtualHost *:80>
ServerName app.example.com
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>
```
## URL 重写
### 基础重写
```apache
# 启用模块
# a2enmod rewrite
<Directory /var/www/html>
RewriteEngine On
# 强制 HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 去除 www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
# 前端路由(SPA)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [L]
</Directory>
```
### .htaccess
```apache
# /var/www/html/.htaccess
RewriteEngine On
# 隐藏 .php 扩展名
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
# 防盗链
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [F]
```
## 安全配置
### 基础安全
```apache
# 隐藏版本信息
ServerTokens Prod
ServerSignature Off
# 禁用目录列表
<Directory /var/www>
Options -Indexes
</Directory>
# 安全头
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-XSS-Protection "1; mode=block"
```
### 访问控制
```apache
# IP 限制
<Directory /var/www/admin>
Require ip 192.168.1.0/24
</Directory>
# 基础认证
<Directory /var/www/private>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
# 创建密码文件
# htpasswd -c /etc/apache2/.htpasswd username
```
## 常见场景
### 场景 1:PHP 配置
```apache
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php-fpm.sock|fcgi://localhost"
</FilesMatch>
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
```
### 场景 2:限流
```apache
# 启用模块
# a2enmod ratelimit
<Location /api>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 400
</Location>
```
### 场景 3:日志格式
```apache
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined_time
CustomLog ${APACHE_LOG_DIR}/access.log combined_time
```
## 故障排查
| 问题 | 排查方法 |
|------|----------|
| 配置错误 | `apachectl configtest` |
| 403 Forbidden | 检查目录权限、SELinux |
| 500 Internal Error | 查看 error.log |
| 模块未加载 | `httpd -M` 检查模块 |
| 性能问题 | 检查 MPM 配置、连接数 |Related Skills
apache-nifi
Expert guidance for Apache NiFi data integration platform including flow design, processors, controller services, process groups, NiFi Registry integration, and cluster configuration. Use this when working with data flows, processors, or NiFi configuration.
apache-spark-data-processing
Complete guide for Apache Spark data processing including RDDs, DataFrames, Spark SQL, streaming, MLlib, and production deployment
apache-airflow-orchestration
Complete guide for Apache Airflow orchestration including DAGs, operators, sensors, XComs, task dependencies, dynamic workflows, and production deployment
apache-nifi-registry
Expert guidance for Apache NiFi Registry including flow versioning, buckets, Git integration, security, and registry client configuration. Use this when working with flow version control and registry management.
bgo
Automates the complete Blender build-go workflow, from building and packaging your extension/add-on to removing old versions, installing, enabling, and launching Blender for quick testing and iteration.
google-docs-manager
Expert in Google Docs management. Use when creating, reading, updating, formatting, or managing Google Docs with markdown support, advanced formatting, tables with full manipulation, images with styling, lists, headers/footers, and table of contents.
genesis-tools:living-docs
Self-maintaining documentation system. Bootstraps, validates, refines, and optimizes codebase documentation. Creates minimal, token-efficient doc chunks. Use when creating, updating, or auditing project documentation.
generate-docstrings
Create docstrings for functions and classes. Use when documenting code APIs.
generate-agent-docs
Generates documentation and usage guides for agents, skills, prompts, and instructions. Works with GitHub Copilot, Claude Code, Codex, OpenCode, and other providers. Use when onboarding team members, creating README files for your customizations, or generating usage examples for existing agents.
flow-documenter
Document findings and maintain task notes using Flow framework. Use when user says "document", "document this", "document finding", "add notes", "add this to notes", "write this down", "summarize", "summarize this", "generate changelog", "create changelog", or wants to capture discoveries. Helps update task Notes sections, create summaries with /flow-summarize, and keep documentation synchronized with work. Focuses on concise, actionable documentation.
fix-markdown
Fix lint, formatting, and prose issues in markdown files using Prettier and Vale. Use when the user or agent needs to fix lint, formatting, and prose issues in markdown files.
file-placement
Activate when creating any summary, report, or output file. Ensures files go to correct directories (summaries/, memory/, stories/, bugs/). Mirrors what summary-file-enforcement hook enforces.