Nginx基于域名的虚拟主机配置详解
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文详细介绍了如何在 Nginx 中配置基于域名的虚拟主机,通过设置不同的 server 块,Nginx 可以根据请求的域名将流量转发到相应的站点目录,关键步骤包括编辑 Nginx 配置文件,添加 server 指令,指定 listen、server_name 和 root 等参数,确保每个虚拟主机的 server_name 唯一且与实际域名匹配,重启 Nginx 服务使配置生效,此配置允许多个网站共存于同一服务器,简化了域名管理和资源分配。
什么是基于域名的虚拟主机?
基于域名的虚拟主机允许在同一台物理服务器上运行多个网站,并通过不同的域名来区分这些网站,这种技术使得用户可以通过访问不同的域名来访问不同的站点内容,你可以在一台服务器上同时托管 example.com
和 blog.example.com
,而无需为每个网站分配独立的 IP 地址,这不仅提高了资源利用率,还简化了网站管理流程。
安装与准备
安装 Nginx
确保你的系统已安装 Nginx,如果你使用的是 Linux 系统,可以通过包管理工具进行安装,以 Ubuntu 为例,执行以下命令:
sudo apt update sudo apt install nginx
启动与启用 Nginx
安装完成后,启动并启用 Nginx 服务:
sudo systemctl start nginx sudo systemctl enable nginx
创建目录结构
我们需要创建一个目录结构来存放不同域名对应的静态文件,假设我们要托管两个域名:example.com
和 blog.example.com
,我们可以创建如下的目录结构:
/var/www/example.com/html /var/www/blog.example.com/html
然后分别创建各自的 HTML 文件作为测试页面:
echo "Welcome to example.com" | sudo tee /var/www/example.com/html/index.html echo "Welcome to blog.example.com" | sudo tee /var/www/blog.example.com/html/index.html
配置 Nginx
编辑主配置文件 /etc/Nginx/nginx.conf
,并在 http
块下添加新的虚拟主机配置,以下是具体的配置示例:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com/html; index index.html; location / { try_files $uri $uri/ =404; } } server { listen 80; server_name blog.example.com www.blog.example.com; root /var/www/blog.example.com/html; index index.html; location / { try_files $uri $uri/ =404; } }
在这个配置中,我们定义了两个 server
块,分别对应 example.com
和 blog.example.com
,每个块都指定了监听的端口(80)、服务器名称(通过 server_name
指定)以及根目录位置(通过 root
指定)。location /
块中的 try_files
指令用于处理请求文件的逻辑,确保文件不存在时返回 404 错误。
测试与验证
检查配置语法
完成配置后,保存文件并检查语法是否正确:
sudo nginx -t
重新加载 Nginx 配置
如果没有错误,重新加载 Nginx 配置以使更改生效:
sudo systemctl reload nginx
验证 DNS 设置
确保你的 DNS 设置正确,将 example.com
和 blog.example.com
解析到你的服务器 IP 地址,可以通过浏览器访问这两个域名,查看是否能够正常显示各自的欢迎页面。