Linux配置基于端口号的虚拟主机详解
配置前置条件
-
确保Apache服务已安装
执行命令yum install httpd -y
(CentOS/RHEL)或apt install apache2 -y
(Debian/Ubuntu)。 -
查看当前端口占用情况
使用命令netstat -tuln | grep :80
检查80端口是否被占用。
配置步骤
-
创建网站目录与测试页面
为每个虚拟主机创建独立的目录,并放置测试文件:mkdir -p /var/www/site1 /var/www/site2 echo "Site1 Content" > /var/www/site1/index.html echo "Site2 Content" > /var/www/site2/index.html
-
编辑Apache主配置文件
打开/etc/httpd/conf/httpd.conf
(CentOS)或/etc/apache2/sites-available/000-default.conf
(Ubuntu),添加以下内容:# 监听80端口(站点1) <VirtualHost :80> ServerAdmin admin@site1.com DocumentRoot /var/www/site1 ServerName site1.com ErrorLog /var/log/httpd/site1-error.log CustomLog /var/log/httpd/site1-access.log </VirtualHost> # 监听8080端口(站点2) <VirtualHost :8080> ServerAdmin admin@site2.com DocumentRoot /var/www/site2 ServerName site2.com ErrorLog /var/log/httpd/site2-error.log CustomLog /var/log/httpd/site2-access.log </VirtualHost>
-
调整防火墙与SELinux设置
- 开放端口:若防火墙开启,需允许新端口:
firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload
- 临时关闭SELinux(仅用于测试,生产环境需优化策略):
setenforce 0
- 开放端口:若防火墙开启,需允许新端口:
-
重启Apache服务
执行命令systemctl restart httpd
(CentOS)或systemctl restart apache2
(Ubuntu)。 -
测试访问
- 通过浏览器访问
http://服务器IP:80
和http://服务器IP:8080
,确认页面内容正确。 - 使用
curl
命令验证:curl http://localhost:80 curl http://localhost:8080
- 通过浏览器访问
常见问题排查
现象 | 原因 | 解决方案 |
---|---|---|
页面无法访问 | 防火墙未开放端口 | 执行 firewall-cmd --add-port=8080/tcp |
SELinux阻止访问 | SELinux策略限制新端口 | 临时关闭 setenforce 0 或配置策略 |
端口冲突 | 其他服务占用目标端口 | 修改端口号或停止冲突服务 |
相关问题与解答
-
如何验证端口号虚拟主机是否配置成功?
使用curl http://localhost:80
和curl http://localhost:8080
检查返回内容是否匹配对应站点的index.html
文件内容,若需通过域名访问,需在/etc/hosts
文件中关联域名与端口(如0.0.1 site1.com:80
)。 -
SELinux导致新端口无法访问如何解决?
可临时关闭SELinux进行测试(命令:setenforce 0
),或永久添加端口规则:semanage port -a -t http_port_t -p tcp 8080
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/68742.html