sites-available
),定义域名、文档根目录及设置;创建对应网站目录;配置DNS解析或本地hosts测试;启用站点配置并重启Web服务(Apache/Nginx)。在Linux系统中建立虚拟主机(Virtual Host)允许您在一台服务器上托管多个网站,每个网站拥有独立的域名、内容和配置,以下是基于Apache和Nginx两种主流Web服务器的详细步骤,遵循最佳实践并兼顾安全性:
准备工作
-
环境要求
- Linux服务器(Ubuntu/CentOS等)
- Root或sudo权限
- 已安装Web服务器(Apache/Nginx)
- 域名指向服务器IP(如
yourdomain.com
)
-
安装必要工具
# Ubuntu/Debian sudo apt update sudo apt install apache2 nginx # 按需选择安装其一 # CentOS/RHEL sudo yum install httpd nginx
Apache虚拟主机配置
步骤1:创建网站目录
sudo mkdir -p /var/www/yourdomain.com/public_html sudo chown -R $USER:$USER /var/www/yourdomain.com/public_html sudo chmod -R 755 /var/www
步骤2:创建测试页面
echo "<h1>Welcome to yourdomain.com</h1>" | sudo tee /var/www/yourdomain.com/public_html/index.html
步骤3:创建虚拟主机配置文件
sudo nano /etc/apache2/sites-available/yourdomain.com.conf ```替换`yourdomain.com`): ```apache <VirtualHost *:80> ServerAdmin admin@yourdomain.com ServerName yourdomain.com ServerAlias www.yourdomain.com DocumentRoot /var/www/yourdomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/yourdomain.com/public_html> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
步骤4:启用配置并重启
sudo a2ensite yourdomain.com.conf # 启用站点 sudo a2dissite 000-default.conf # 禁用默认站点(可选) sudo systemctl reload apache2 # 重启服务
Nginx虚拟主机配置
步骤1:创建网站目录(同Apache)
sudo mkdir -p /var/www/yourdomain.com/public_html
步骤2:创建Nginx配置文件
sudo nano /etc/nginx/conf.d/yourdomain.com.conf
server { listen 80; listen [::]:80; server_name yourdomain.com www.yourdomain.com; root /var/www/yourdomain.com/public_html; index index.html; access_log /var/log/nginx/yourdomain.com.access.log; error_log /var/log/nginx/yourdomain.com.error.log; location / { try_files $uri $uri/ =404; } # 安全加固(可选) location ~ /.ht { deny all; } }
步骤3:测试并重启Nginx
sudo nginx -t # 检查配置语法 sudo systemctl reload nginx
验证与测试
-
本地hosts测试(无DNS时)
编辑本地计算机的/etc/hosts
(Windows为C:WindowsSystem32driversetchosts
):your_server_ip yourdomain.com
浏览器访问
http://yourdomain.com
,显示测试页面即成功。 -
终端快速验证
curl -H "Host: yourdomain.com" http://localhost # 返回HTML内容
安全性与最佳实践
-
防火墙配置
sudo ufw allow 80/tcp # 开放HTTP端口 sudo ufw allow 443/tcp # 为后续HTTPS准备
-
启用HTTPS(强制加密)
使用Certbot获取免费SSL证书:sudo apt install certbot python3-certbot-apache # Apache sudo certbot --apache -d yourdomain.com # Nginx用户替换为: sudo apt install python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
-
权限最小化原则
- 网站目录权限设为
755
,文件权限644
- 避免使用
root
用户运行Web服务
- 网站目录权限设为
-
定期更新与监控
sudo apt update && sudo apt upgrade -y # 保持系统更新 sudo journalctl -u apache2 --since "1 hour ago" # 检查日志
常见问题解决
-
403 Forbidden 错误
检查目录权限:sudo chmod -R o+r /var/www/yourdomain.com
-
Nginx/Apache冲突
确保只运行一个服务:sudo systemctl stop apache2 # 停用Apache sudo systemctl enable nginx # 启用Nginx
-
域名无法解析
验证DNS解析:nslookup yourdomain.com
引用说明
- Apache官方文档:Virtual Host Examples
- Nginx官方指南:Server Blocks
- Certbot自动化HTTPS:certbot.eff.org
通过上述步骤,您已成功在Linux服务器部署虚拟主机,建议定期备份配置文件(/etc/apache2/sites-available/
或 /etc/nginx/conf.d/
)并遵循最小权限原则保障安全。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/33871.html