上一篇
httpd配置域名
- 行业动态
- 2025-04-30
- 4831
在httpd.conf中通过`
指令配置域名,设置
ServerName`对应域名,指定文档根目录及权限,确保DNS解析指向服务器IP,重启 httpd服务
Apache(httpd)域名配置基础
Apache通过VirtualHost
指令实现多域名管理,核心配置文件为httpd.conf
或apache2.conf
,实际配置常分散在conf.d/
或sites-available/
目录。
配置文件路径
系统类型 | 主配置文件 | 常用目录 |
---|---|---|
Linux | /etc/httpd/conf/httpd.conf | /etc/httpd/conf.d/ |
Debian/Ubuntu | /etc/apache2/apache2.conf | /etc/apache2/sites-available/ |
Windows | C:Program FilesApacheconfhttpd.conf | C:Program FilesApacheconfextra |
基础虚拟主机配置示例
<VirtualHost :80> ServerName www.example.com DocumentRoot /var/www/example <Directory /var/www/example> AllowOverride All Require all granted </Directory> </VirtualHost>
多域名配置方案
基于IP的虚拟主机
配置特点 | 适用场景 | 示例 |
---|---|---|
依赖IP地址 | 多IP服务器 | <VirtualHost 192.168.1.100:80>...</VirtualHost> |
无需修改Hosts | 独立IP站点 | 需为每个域名分配不同IP |
基于端口的虚拟主机
配置特点 | 适用场景 | 示例 |
---|---|---|
同一IP不同端口 | 测试环境/特殊需求 | <VirtualHost :8080>...</VirtualHost> |
需手动指定端口 | 非常规业务部署 | 访问时需输入http://example.com:8080 |
基于名称的虚拟主机(推荐)
配置特点 | 适用场景 | 示例 |
---|---|---|
共享IP地址 | 主流方案 | ServerName www.example.com |
需DNS解析 | 生产环境 | 需确保域名正确解析到服务器IP |
SSL证书配置
证书文件存放规范
/etc/ssl/certs/ # 存放PEM格式证书文件 /etc/ssl/private/ # 存放私钥文件 /etc/ssl/cert.pem # 默认证书(Debian系)
完整HTTPS配置示例
<VirtualHost :443> ServerName www.secure-site.com DocumentRoot /var/www/secure-site SSLEngine on SSLCertificateFile /etc/ssl/certs/secure-site.pem SSLCertificateKeyFile /etc/ssl/private/secure-site.key <Directory /var/www/secure-site> AllowOverride All Require all granted </Directory> </VirtualHost>
重定向配置
HTTP强制跳转HTTPS
<VirtualHost :80> ServerName www.force-https.com Redirect permanent / https://www.force-https.com/ </VirtualHost>
URL标准化重定向
<VirtualHost :80> ServerName www.normalize.com DocumentRoot /var/www/normalize RewriteEngine On RewriteCond %{HTTP_HOST} !^www. [NC] RewriteRule ^(.)$ https://www.%{HTTP_HOST}/$1 [L,R=301] </VirtualHost>
配置验证与调试
操作命令 | 作用说明 |
---|---|
apachectl configtest | 验证配置文件语法 |
systemctl restart httpd | 重启服务(Linux) |
htaccess-enabled | 检查.htaccess生效状态 |
curl -I http://domain.com | 查看HTTP响应头 |
常见问题与解答
Q1:如何配置多个域名指向同一文档根目录?
A1:使用相同DocumentRoot
并设置不同的ServerName
,
<VirtualHost :80> ServerName site1.com DocumentRoot /var/www/shared </VirtualHost> <VirtualHost :80> ServerName site2.com DocumentRoot /var/www/shared </VirtualHost>
Q2:Let’s Encrypt证书如何自动续期?
A2:使用Certbot工具配置定时任务:
- 安装Certbot:
apt install certbot python3-certbot-apache
- 获取证书:
certbot --apache -d domain.com
- 添加定时任务:
/usr/bin/certbot renew --quiet
(