详解Nginx配置多站点虚拟主机的实现方法
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文详细介绍了如何通过Nginx配置实现多站点虚拟主机,主要通过修改Nginx的配置文件,利用server
块区分不同域名或IP端口,设置各自的根目录、端口号等参数,从而实现在同一台服务器上托管多个网站,配置过程包括创建网站目录、编辑Nginx虚拟主机配置文件、重启服务等步骤,适用于基于域名或IP的多站点部署场景。
在现代 Web 服务器架构中,Nginx 凭借其高性能、低资源占用以及灵活的配置能力,成为众多开发者与系统管理员的首选方案,尤其在处理高并发请求和静态资源服务方面,Nginx 表现出色,随着网站数量的不断增长,如何在一台服务器上同时运行多个站点(即“多站点虚拟主机”)已成为一个常见且重要的需求。
什么是多站点虚拟主机?
所谓“多站点虚拟主机”,是指在同一台服务器上运行多个独立的 Web 站点,每个站点可以拥有独立的域名、端口、配置文件以及访问权限,通过 Nginx 提供的“虚拟主机”机制,不同站点可以共享同一台服务器资源,而用户在访问不同域名时则能看到各自对应的内容。
Nginx 通过配置中的 server
块来实现虚拟主机功能,每个 server
块代表一个站点,Nginx 会根据客户端请求中的 Host
请求头(即用户访问的域名)来决定将请求转发给哪一个 server
块进行处理。
Nginx 配置多站点虚拟主机的前提条件
在开始配置之前,需要确保满足以下基本条件:
- 安装并启动 Nginx 服务:服务器上已安装并运行 Nginx。
- 域名正确解析:各站点的域名需解析到该服务器的公网 IP 地址。
- 熟悉 Linux 操作:了解 Linux 文件系统、权限管理及服务重启等基本操作。
配置步骤详解
下面我们以两个域名为例,演示如何配置 Nginx 的多站点虚拟主机:
- 域名1:www.example.com
- 域名2:www.testsite.com
创建网站根目录
为每个站点创建独立的根目录:
sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/testsite.com/public_html
在每个目录下创建一个简单的测试页面用于验证配置是否成功:
echo "Welcome to example.com" > /var/www/example.com/public_html/index.html echo "Welcome to testsite.com" > /var/www/testsite.com/public_html/index.html
创建虚拟主机配置文件
Nginx 的虚拟主机配置文件通常位于 /etc/nginx/sites-available/
目录下,我们分别为两个站点创建配置文件:
sudo nano /etc/nginx/sites-available/example.com sudo nano /etc/nginx/sites-available/testsite.com
example.com 配置示例:
server { listen 80; server_name www.example.com example.com; location / { root /var/www/example.com/public_html; index index.html; try_files $uri $uri/ =404; } }
testsite.com 配置示例:
server { listen 80; server_name www.testsite.com testsite.com; location / { root /var/www/testsite.com/public_html; index index.html; try_files $uri $uri/ =404; } }
启用站点配置
创建从 sites-available
到 sites-enabled
的符号链接以启用站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/testsite.com /etc/nginx/sites-enabled/
检查配置并重启 Nginx
在启用站点后,执行以下命令检查配置文件是否正确:
sudo nginx -t
如果提示“syntax is ok”和“test is successful”,说明配置无误,接下来重启 Nginx 以使配置生效:
sudo systemctl restart nginx
测试访问
在浏览器中分别访问以下地址:
http://www.example.com
http://www.testsite.com
如果能看到各自对应的欢迎页面,则说明配置成功。
进阶配置与注意事项
基于端口的虚拟主机
除了基于域名的虚拟主机,还可以配置基于端口的虚拟主机,将一个站点配置为监听 8080 端口:
server { listen 8080; server_name localhost; location / { root /var/www/other_site; index index.html; } }
访问 http://your_ip:8080
即可访问该站点。
启用 HTTPS(SSL 配置)
如需为站点启用 HTTPS,可在配置中添加 SSL 相关参数:
server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/ssl/certs/example.com.crt; ssl_certificate_key /etc/ssl/private/example.com.key; location / { root /var/www/example.com/public_html; index index.html; } }
分离访问日志与错误日志
为每个站点配置独立的日志文件,有助于问题排查和性能监控:
echo "Welcome to example.com" > /var/www/example.com/public_html/index.html echo "Welcome to testsite.com" > /var/www/testsite.com/public_html/index.html0
防止未绑定域名访问
为了防止通过 IP 地址直接访问服务器内容,可以设置一个默认的 server
块返回 403 或 404:
echo "Welcome to example.com" > /var/www/example.com/public_html/index.html echo "Welcome to testsite.com" > /var/www/testsite.com/public_html/index.html1
通过本文的介绍,我们了解了 Nginx 配置多站点虚拟主机的基本原理与详细步骤,无论是个人博客、企业官网还是开发测试环境,Nginx 的虚拟主机功能都能提供高效、灵活的解决方案。
掌握这一技能,不仅有助于节省服务器资源,还能显著提升 Web 服务的可管理性和可扩展性,在实际应用中,建议根据具体业务需求合理配置站点结构、访问权限和日志策略,同时注意服务器的安全加固和性能优化。
Nginx 不仅是出色的 Web 服务器,还具备强大的反向代理、负载均衡和缓存功能,后续可以结合这些高级功能,进一步提升整体服务的稳定性和性能。