httpd虚拟主机配置全攻略,三步搞定多站点托管


"为啥我的网站总跳转到默认页?"

您是不是刚在服务器部署完第二个网站,却发现访问时总跳转到默认页面?这事儿跟三年前我邻居老王配置企业官网时一模一样——他给两个客户做了网站,结果访问时都显示阿帕奇的测试页。今天咱们用庖丁解牛的方式,把httpd虚拟主机的配置秘诀给您整明白!


一、虚拟主机三大门派

​httpd虚拟主机分三种类型​​,就跟武侠小说里的门派似的各有绝活:

✅ ​​IP门派​​:每个站点独占IP地址(好比包场电影院)
✅ ​​端口门派​​:同IP不同端口号(类似KTV的不同包厢)
✅ ​​域名门派​​:同IP同端口靠域名区分(最常用的门派)

举个栗子🌰:

类型配置示例适用场景
IP型192.168.1.10:80 *** /金融等高安全场景
端口型http://www.site.com:8080内部测试环境
域名型http://www.site1.com & http://www.site2.com企业官网/电商平台

老王当年就是没搞懂这些门派的区别,把两个客户的网站都配成了IP型,结果服务器只有一个公网IP,自然就翻车了。


二、实战配置六步走

以​​域名型虚拟主机​​为例,手把手教您避开配置雷区:

  1. ​开启模块​
    找到httpd.conf里的#Include conf/extra/httpd-vhosts.conf,去掉#号注释
    (就跟打开武功秘籍的封印似的)

  2. ​配置文件​
    extra/httpd-vhosts.conf添加:

    apache复制
    :80>ServerAdmin web@site1.comDocumentRoot "/var/www/site1"ServerName www.site1.comErrorLog "logs/site1_error.log"

    注意​​DocumentRoot路径别带中文​​,去年有人用"D:\网站"导致乱码报错

  3. ​权限设置​

    bash复制
    chmod -R 755 /var/www/site1chown -R apache:apache /var/www/site1

    这步相当于给网站文件办"通行证"

  4. ​防火墙放行​

    bash复制
    firewall-cmd --permanent --add-port=80/tcpfirewall-cmd --reload

    遇到过403错误?八成是防火墙把请求拦在门外了

  5. ​本地解析​
    /etc/hosts添加:

    192.168.1.10 www.site1.com192.168.1.10 www.site2.com

    这操作就像给导航仪添加新地址

  6. ​重启验证​

    bash复制
    systemctl restart httpdcurl -I www.site1.com

    看到200状态码就算通关成功!


三、避坑指南(血泪教训)

  1. ​端口冲突​
    netstat -tunlp | grep :80检查端口占用,去年有哥们被Nginx抢了端口导致Apache起不来

  2. ​SELinux作妖​
    遇到权限问题别慌,试试:

    bash复制
    setsebool -P httpd_enable_homedirs 1restorecon -Rv /var/www/

    这招专治各种"Permission denied"

  3. ​日志追踪​

    bash复制
    tail -f /var/log/httpd/site1_error.log

    实时监控日志,比监控摄像头还管用

  4. ​SSL证书配置​
    要上HTTPS记得在里添加:

    apache复制
    SSLEngine onSSLCertificateFile /path/to/cert.pemSSLCertificateKeyFile /path/to/privkey.pem

    去年双十一有电商网站忘记配这个,损失百万订单


四、灵魂拷问环节

​Q:虚拟主机和云虚拟主机啥关系?​
A:前者是技术实现,后者是商业产品,就像自家厨房vs外卖平台

​Q:能配多少个虚拟主机?​
A:理论上无上限,但受内存和CPU限制,普通服务器建议不超过50个

​Q:配置错了怎么回滚?​
A:用httpd -t测试配置语法,阿里云有个工程师没做这步直接重启,导致全网服务中断8小时


小编观点时间

搞了八年服务器运维的 *** 说句掏心窝子的话:​​虚拟主机配置就像搭积木,顺序错了整个垮掉​​。最近发现个有趣现象:00后运维喜欢用Docker容器代替传统虚拟主机,而70后大叔们还在 *** 磕httpd.conf配置文件。

要我说,掌握原理最重要。去年某银行系统升级,老配置迁移到新平台时,那帮只会点鼠标的新人全傻眼了,最后还是靠懂原理的老工程师手写配置文件救场。记住喽:​​图形化工具会过时,底层技术永流传​​!

(突然想起来)对了,您知道nginx虚拟主机配置比httpd少三行代码吗?下回咱再唠这个性能优化的话题!

: 配置httpd虚拟主机 - 谭普利特 - 博客园
: 如何在CentOS上配置HTTPD以实现虚拟主机功能? - 酷盾
: 如何在CentOS上配置HTTPD虚拟主机? - 酷盾
: WAMP下Apache配置httpd-vhosts虚拟主机多站点
: /etc/httpd到底是干什么的?使用场景是什么?底层原理是什么?
: Apache 配置与应用(详细的图文介绍)_1路92.168.118.1-CSDN博客
: php配置虚拟主机失败怎么办 • Worktile社区
: httpd当中访问虚拟主机时候遇到的问题_weixin_34143774的博客-CSDN博客
: 虚拟主机地址访问不了如何解决 - 酷盾