Nginx虚拟主机设置域名详细配置指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
本文详细介绍了如何在Nginx中配置虚拟主机以绑定域名,包括修改nginx.conf或站点配置文件,使用server块定义server_name、监听端口、根目录及location路由规则,并通过DNS解析将域名指向服务器IP,还说明了配置完成后重启Nginx服务并验证设置的方法,适用于多域名部署场景。
在现代Web服务器部署中,Nginx因其高性能、低资源消耗和高并发处理能力而广受欢迎,尤其是在多站点托管的场景下,通过Nginx配置虚拟主机(Virtual Host),可以实现一台服务器上运行多个网站,每个网站绑定不同的域名,互不干扰,本文将详细介绍如何在Nginx中设置虚拟主机并绑定域名,帮助初学者快速掌握这一核心技能。
什么是Nginx虚拟主机?
Nginx中的“虚拟主机”通常称为“Server Block”(服务器块),它允许在同一台物理服务器上托管多个独立的网站或应用,每个虚拟主机可以通过不同的域名访问,www.example1.com 和 www.example2.com 可以指向同一台服务器的不同目录,实现资源共享但内容隔离。
虚拟主机主要分为三种类型:
- 基于域名的虚拟主机:最常见的方式,通过不同域名区分不同的网站。
- 基于IP地址的虚拟主机:每个网站使用不同的IP地址。
- 基于端口的虚拟主机:通过不同的端口号来区分服务。
基于域名的虚拟主机最为实用,也是我们今天重点讲解的内容。
准备工作
在开始配置之前,请确保满足以下条件:
- 已安装Nginx服务(可通过
nginx -v查看版本)。 - 拥有至少一个已注册的域名,并将其DNS解析到服务器的公网IP。
- 服务器防火墙已开放80(HTTP)和443(HTTPS)端口。
- 具备对服务器的SSH访问权限及root或sudo权限。
配置基于域名的Nginx虚拟主机
下面我们以配置一个名为 www.mywebsite.com 的网站为例,演示完整流程。
第一步:创建网站根目录
首先为该域名创建一个独立的网站目录,并放置测试页面:
sudo mkdir -p /var/www/mywebsite.com/html sudo chown -R $USER:$USER /var/www/mywebsite.com/html sudo chmod -R 755 /var/www/mywebsite.com
创建一个简单的HTML测试页面:
nano /var/www/mywebsite.com/html/index.html
<!DOCTYPE html>
<html>
<head>Welcome to MyWebsite!</title>
</head>
<body>
<h1>Success! Your domain is correctly configured with Nginx.</h1>
<p>This is the site for www.mywebsite.com.</p>
</body>
</html>
保存退出。
第二步:创建Nginx Server Block配置文件
Nginx的虚拟主机配置文件通常存放在 /etc/nginx/sites-available/ 目录下,我们为新域名创建一个配置文件:
sudo nano /etc/nginx/sites-available/mywebsite.com
在文件中输入以下内容:
server {
listen 80;
server_name www.mywebsite.com mywebsite.com;
root /var/www/mywebsite.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 日志路径(可选)
access_log /var/log/nginx/mywebsite.com.access.log;
error_log /var/log/nginx/mywebsite.com.error.log;
}
参数说明:
listen 80;:监听80端口,处理HTTP请求。server_name:指定该虚拟主机响应的域名,支持多个域名(用空格分隔)。root:定义网站文件的根目录。index:设置默认索引文件。location /:定义根路径的处理规则,try_files尝试匹配文件,否则返回404。- 日志路径可自定义,便于后续排查问题。
第三步:启用虚拟主机
Nginx默认不会自动加载 sites-available 下的配置,需要创建符号链接到 sites-enabled 目录:
sudo ln -s /etc/nginx/sites-available/mywebsite.com /etc/nginx/sites-enabled/
第四步:测试配置并重启Nginx
在重启前,先检查配置语法是否正确:
sudo nginx -t
如果显示“syntax is ok”和“test is successful”,说明配置无误。
然后重新加载Nginx服务:
sudo systemctl reload nginx
域名解析与验证
确保你的域名(如 mywebsite.com)已在域名注册商处设置A记录,指向服务器的公网IP地址。
A @ 203.0.113.10
A www 203.0.113.10
等待DNS生效后(通常几分钟到几小时),在浏览器中访问 http://www.mywebsite.com,如果看到我们创建的测试页面,说明配置成功。
进阶配置建议
-
配置HTTPS(推荐)
使用Let’s Encrypt免费SSL证书,可通过Certbot工具一键部署:sudo certbot --nginx -d mywebsite.com -d www.mywebsite.com
配置后,Nginx会自动更新配置文件,启用HTTPS并重定向HTTP流量。
-
配置多个虚拟主机
只需重复上述步骤,为每个域名创建独立的配置文件和目录即可,Nginx能高效管理数十个甚至上百个虚拟主机。 -
错误处理与重定向
可添加自定义404页面或设置301重定向:error_page 404 /404.html; location = /404.html { internal; } # 强制HTTPS if ($scheme != "https") { return 301 https://$host$request_uri; } -
安全加固
禁止访问敏感文件、限制上传大小、隐藏Nginx版本号等:server_tokens off; location ~ /\.ht { deny all; } client_max_body_size 100M;
常见问题排查
- 访问显示默认页面:检查
server_name是否匹配,确认配置文件已启用。 - 403 Forbidden:检查目录权限是否为755,文件属主是否正确。
- 502 Bad Gateway:若代理PHP或Node.js应用,检查后端服务是否运行。
- DNS未生效:使用
ping或dig命令检测域名解析情况。
通过以上步骤,我们已经成功在Nginx中设置了基于域名的虚拟主机,无论是个人博客、企业官网还是多个项目并行开发,这种配置方式都能极大提升服务器利用率和管理效率,随着对Nginx理解的深入,你还可以结合反向代理、负载均衡、缓存优化等功能,构建更强大、稳定的Web服务架构。
掌握Nginx虚拟主机的配置,是每一个运维工程师和全栈开发者必备的基础技能,希望本文能为你提供清晰、实用的指导,助你在实际项目中游刃有余地部署和管理多域名网站。



