Ubuntu如何添加新虚拟主机?linux服务器配置虚拟主机教程
- 虚拟主机
- 2026-06-13
- 6
在 Ubuntu 系统中添加新的虚拟主机(Virtual Host)通常涉及 Web 服务器软件(如 Nginx 或 Apache)的配置,以下将以目前广泛使用的 Nginx 为例,详细说明从零开始配置一个虚拟主机的完整流程,如果你使用的是 Apache,核心逻辑类似,但配置文件语法略有不同。
准备工作:目录结构与权限
在配置虚拟主机之前,首先需要为网站创建必要的目录结构,并设置正确的权限,以确保 Web 服务器能够读取文件。
假设我们要为域名 example.com 添加虚拟主机:
-
创建目录:
使用 mkdir 命令创建网站根目录,通常我们将网站文件存放在 /var/www/ 下。
sudo mkdir -p /var/www/example.com/public_html -
创建测试文件:
为了方便验证配置是否生效,可以在该目录下创建一个简单的 index.html 文件。
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html -
设置权限:
确保 Nginx 用户(通常是 www-data)拥有对目录的读取权限。
sudo chown -R www-data:www-data /var/www/example.com sudo chmod -R 755 /var/www/example.com
创建虚拟主机配置文件
Nginx 的虚拟主机配置文件通常位于 /etc/nginx/sites-available/ 目录下,我们需要创建一个新文件来定义该域名的行为。
-
创建配置文件:
使用文本编辑器(如 nano 或 vim)创建配置文件。
sudo nano /etc/nginx/sites-available/example.com -
编写配置内容

:
在文件中输入以下基础配置,这段代码告诉 Nginx 监听 80 端口,并将 example.com 的请求指向我们刚才创建的目录。
配置指令 说明 server { 开始定义一个服务器块 listen 80; 监听标准的 HTTP 端口 80 listen [::]:80; 监听 IPv6 的 HTTP 端口 80 server_name example.com www.example.com; 指定该虚拟主机处理的域名 root /var/www/example.com/public_html; 指定网站的根目录路径 index index.html; 默认首页文件名 location / { 定义根路径下的行为 try_files $uri $uri/ =404; 优先查找文件,若不存在则返回 404 结束 location 块 结束 server 块 完整配置示例:
server { listen 80; listen [::]:80; root /var/www/example.com/public_html; index index.html; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } } -
保存并退出:
如果使用 nano,按 Ctrl + O 保存,Enter 确认,Ctrl + X 退出。
启用虚拟主机并测试配置
创建配置文件后,Nginx 并不会自动加载它,我们需要通过符号链接将其“启用”,并测试配置语法是否正确。

-
创建符号链接:
将 sites-available 中的配置文件链接到 sites-enabled 目录。
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ -
测试配置语法:
在重启服务之前,务必检查配置是否有语法错误。
sudo nginx -t如果输出包含 syntax is ok 和 test is successful,则说明配置无误。
-
重载 Nginx:
应用更改。
sudo systemctl reload nginx
本地测试与 DNS 设置
由于你可能没有真实的 DNS 记录指向该服务器,可以通过修改本地 hosts 文件来测试。
-
修改本地 Hosts 文件:
在你的电脑(而非服务器)上,编辑 C:WindowsSystem32driversetchosts (Windows) 或 /etc/hosts (Mac/Linux)。
添加一行:
<服务器IP地址> example.com
-
浏览器访问:
打开浏览器访问 http://example.com,你应该能看到之前创建的 “Welcome to example.com” 页面。
相关问题与解答
问题 1:如果在配置虚拟主机时遇到 “403 Forbidden” 错误,可能的原因有哪些?
解答:
“403 Forbidden” 通常意味着 Nginx 有权访问服务器,但无权读取网站文件,常见原因包括:
- 权限问题:网站根目录或父目录没有对 www-data 用户设置读取和执行权限,解决方法是使用 sudo chown -R www-data:www-data /var/www/your_domain 和 sudo chmod -R 755 /var/www/your_domain。
- SELinux 或 AppArmor:某些安全模块可能阻止了 Web 服务器访问特定目录,检查安全日志(如 /var/log/audit/audit.log)以确认是否被拦截。
- 缺少索引文件:如果目录中没有 index.html 或 index.php,且配置中未开启目录列表(autoindex),Nginx 可能会返回 403,确保目录中有默认首页文件,或在 location 块中添加 autoindex on;(仅用于调试,生产环境不建议)。
问题 2:如何为这个新的虚拟主机配置 HTTPS(SSL 证书)?
解答:
配置 HTTPS 推荐使用 Let’s Encrypt 提供的免费证书,通过 Certbot 工具自动化管理,步骤如下:
- 安装 Certbot: sudo apt update sudo apt install certbot python3-certbot-nginx
- 获取证书:
运行以下命令,Certbot 会自动修改 Nginx 配置以启用 HTTPS 并重定向 HTTP 到 HTTPS。 sudo certbot --nginx -d example.com -d www.example.com
- 验证配置:
命令执行后,Certbot 会询问是否重定向所有 HTTP 流量到 HTTPS,建议选择 “Redirect”,之后,Nginx 会自动重载配置,你可以使用 curl -I https://example.com 检查是否返回 HTTP/2 200 以及证书信息。