不管是出于成本考虑,还是为了资源最大化利用,使用一台服务器承载多个网站早已成为常态,Nginx的多站点配置都是Debian服务器用户绕不过的重要技能。本文将详细介绍如何从零开始配置Nginx支持多个网站,并对相关配置文件进行具体说明。
一、前提准备
1. 安装 Debian 系统和更新
首先确保使用的是一台干净且联网的 Debian 服务器。以 Debian 11 为例,系统安装完成后,推荐先更新软件包:
sudo apt update && sudo apt upgrade -y
2. 安装 Nginx
Debian 官方源中已包含 Nginx,使用以下命令即可安装:
sudo apt install nginx -y
安装完成后可通过以下命令验证是否安装成功:
nginx -v
默认安装路径为 /etc/nginx/
,网站目录一般放置在 /var/www/
下。
二、Nginx 默认站点结构说明
Nginx 的配置文件位于 /etc/nginx/
,核心配置如下:
/etc/nginx/nginx.conf
:主配置文件;/etc/nginx/sites-available/
:用于存放站点配置文件;/etc/nginx/sites-enabled/
:用于启用站点配置的符号链接;/var/www/html/
:默认站点的网页根目录。
Nginx 的站点管理逻辑是先将配置文件写入 sites-available/
,再通过 ln -s
创建符号链接至 sites-enabled/
,最后重载配置生效。
三、新建两个站点进行演示
我们以两个虚拟站点为例:
第一个站点:example1.com
第二个站点:example2.com
确保这两个域名已正确解析至当前服务器的公网 IP,或在本地通过 hosts
文件进行伪解析用于测试。
1. 创建站点目录
为每个站点建立独立目录和权限:
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
sudo chown -R www-data:www-data /var/www/example1.com
sudo chown -R www-data:www-data /var/www/example2.com
2. 设置简单的首页测试文件
echo "<h1>Welcome to Example1.com</h1>" | sudo tee /var/www/example1.com/html/index.html
echo "<h1>Welcome to Example2.com</h1>" | sudo tee /var/www/example2.com/html/index.html
四、配置两个独立虚拟主机
现在进入关键步骤:为每个站点创建 Nginx 配置文件。
1. 配置 example1.com
在 sites-available
下创建新文件:
sudo nano /etc/nginx/sites-available/example1.com
写入如下内容:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html index.htm;
access_log /var/log/nginx/example1_access.log;
error_log /var/log/nginx/example1_error.log;
location / {
try_files $uri $uri/ =404;
}
}
保存后,创建启用链接:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
2. 配置 example2.com
同样步骤:
sudo nano /etc/nginx/sites-available/example2.com
写入:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html index.htm;
access_log /var/log/nginx/example2_access.log;
error_log /var/log/nginx/example2_error.log;
location / {
try_files $uri $uri/ =404;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
五、检查并重启 Nginx 服务
执行以下命令检查语法是否正确:
sudo nginx -t
输出显示 syntax is ok
,则说明配置无误。然后重新加载配置:
sudo systemctl reload nginx
现在访问 http://example1.com
和 http://example2.com
,应分别显示对应的欢迎页面。
六、常见错误与排查
1. 端口冲突问题:若配置文件中多个 server
监听相同端口,但没有设置 server_name
或设置不明确,Nginx 无法正确区分访问站点。
2. 域名未解析:域名未正确指向服务器 IP,访问会被浏览器拦截或跳转失败。
3. 权限问题:若站点目录非 www-data
用户权限,可能出现 403 Forbidden 错误。
4. 日志未开启:建议每个站点都设置独立日志文件,便于后续排障分析。
通过合理配置Nginx虚拟主机,Debian服务器完全可以胜任多站点部署的任务。该方式不仅节约服务器成本,而且可以提高资源使用率,增强系统管理的灵活性。对于DevOps、Web开发者或中小型企业运维人员而言,都是一项极具价值的技能。