虚拟主机配置指南
虚拟主机(Virtual Host)允许单台服务器托管多个域名或网站,是优化服务器资源的核心技术,主流Web服务器的配置方法如下:
Apache服务器配置
环境要求:已安装Apache(httpd),支持mod_ssl
(如需HTTPS)
# 1. 创建站点目录(以example.com为例) sudo mkdir -p /var/www/example.com/public_html # 2. 创建配置文件 sudo nano /etc/apache2/sites-available/example.com.conf # 3. 写入基础配置(端口80) <VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> # 4. 启用站点并重载配置 sudo a2ensite example.com.conf sudo systemctl reload apache2
HTTPS扩展配置(需提前获取SSL证书):
<VirtualHost *:443> ServerName example.com DocumentRoot /var/www/example.com/public_html SSLEngine on SSLCertificateFile /etc/ssl/certs/example.com.crt SSLCertificateKeyFile /etc/ssl/private/example.com.key SSLCertificateChainFile /etc/ssl/certs/ca_bundle.crt </VirtualHost>
Nginx服务器配置
环境要求:已安装Nginx,开放80/443端口
# 1. 创建站点目录 sudo mkdir -p /var/www/example.com/html # 2. 创建配置文件 sudo nano /etc/nginx/sites-available/example.com # 3. 写入基础配置 server { listen 80; listen [::]:80; root /var/www/example.com/html; index index.html; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } } # 4. 创建符号链接并测试配置 sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl reload nginx
HTTPS扩展配置(使用Let’s Encrypt示例):
# 安装Certbot工具 sudo apt install certbot python3-certbot-nginx # 自动获取并配置证书 sudo certbot --nginx -d example.com -d www.example.com
Windows IIS服务器配置
- 打开IIS管理器:
Win+R → 输入inetmgr
→ 进入管理控制台 - 添加站点:
右键”站点” → 选择”添加网站”- 站点名称:
example.com
- 物理路径:
C:inetpubexample.compublic_html
- 主机名:
example.com
- 站点名称:
- 绑定域名:
点击站点 → “绑定” → 添加HTTP(端口80)或HTTPS(端口443,需导入证书) - 应用配置:
点击右侧”应用”保存设置
关键安全与优化建议
-
权限控制
- Apache/Nginx:
sudo chown -R www-data:www-data /var/www/example.com # Linux用户组权限 sudo chmod -R 755 /var/www/example.com # 目录权限限制
- IIS:编辑应用程序池 → 设置专用账户权限
- Apache/Nginx:
-
强制HTTPS重定向
Apache:RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nginx:
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
-
日志管理
定期轮转日志(使用logrotate
或IIS日志清理计划),避免磁盘占满。
验证配置是否生效
- 本地Hosts测试(临时解析):
0.0.1 example.com
- 终端命令验证:
curl -I http://example.com # 查看HTTP头信息 openssl s_client -connect example.com:443 # 检查SSL证书
- 在线工具检测:
常见问题排查
- 403 Forbidden:检查目录权限与
index
文件是否存在 - 502 Bad Gateway:确认后端服务(如PHP-FPM)是否运行
- SSL证书错误:确保证书链完整且域名匹配
重要提示:生产环境操作前务必备份配置文件(如
httpd.conf
,nginx.conf
),修改后使用apachectl -t
或nginx -t
验证语法。
引用说明
本文参考官方技术文档:
- Apache HTTP Server Documentation
- Nginx Admin Guide
- Microsoft IIS Technical Reference
- Let’s Encrypt Certbot Instructions
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/39491.html