Nginx配置多站点虚拟主机实现高效负载均衡与域名解析
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
本文介绍了如何通过配置 Nginx 来实现多站点虚拟主机,支持高效负载均衡和域名解析,通过在 Nginx 中设置 server 块,可以为不同域名分配不同的服务器响应,利用 upstream 指令实现负载均衡,确保请求均匀分布到多个后端服务器,提升系统性能和可靠性,正向代理功能增强了网络访问的安全性和灵活性,适合复杂的企业级应用环境。
在现代互联网架构中,服务器承载着多种服务和应用,随着业务的增长,单一服务器可能无法满足需求,因此需要对服务器进行高效的管理和扩展,Nginx 是一个高性能的 HTTP 和反向代理服务器,以其轻量级、稳定性和灵活性而闻名,通过配置多站点虚拟主机,可以轻松地在一个物理服务器上托管多个网站,并支持不同的域名和 IP 地址,本文将详细介绍如何使用 Nginx 实现多站点虚拟主机配置,帮助您更好地管理您的 Web 服务。
Nginx(发音为“engine-x”)是一个高性能的 HTTP 和反向代理服务器,也广泛用于 IMAP/POP3 代理服务,Nginx 由 Igor Sysoev 开发,第一个公开版本发布于2004年10月,其特点包括处理静态文件、索引文件以及代理上游服务器等操作时不依赖外部模块,主要使用纯 C 语言编写,并通过事件驱动的方式完成工作,而不依赖操作系统提供的多线程机制及连接池。
Nginx 的优势在于其卓越的高并发性能、低资源占用以及易于扩展的能力,相比传统的 Apache 等 Web 服务器,Nginx 更适合处理大规模并发请求,Nginx 支持动态模块加载,允许用户根据需求添加额外的功能,进一步增强了其灵活性和适用性。
多站点虚拟主机的概念
多站点虚拟主机是指在同一台物理服务器上运行多个独立的网站或应用程序,每个站点拥有各自的域名、IP 地址和配置文件,通过使用虚拟主机技术,管理员可以在同一台服务器上托管多个网站,而无需为每个网站分配单独的物理资源,这种技术不仅提高了服务器的利用率,还显著降低了运营成本。
虚拟主机主要有以下三种类型:
- 基于域名的虚拟主机:这是最常见的类型,通过检查 HTTP 请求中的
Host
头来区分不同的站点。 - 基于 IP 的虚拟主机:为每个站点分配一个独立的 IP 地址,适用于需要不同 IP 地址的应用场景。
- 基于端口的虚拟主机:为每个站点分配不同的端口号,这种方式较少使用,因为需要在客户端手动指定端口号访问站点。
在实际应用中,基于域名的虚拟主机最为常用,因为它无需更改客户端配置即可实现多站点托管。
Nginx 的基本安装与配置
在开始配置多站点之前,请确保已正确安装并启动了 Nginx 服务,以下是 Ubuntu 系统下安装 Nginx 的步骤:
-
更新包列表并安装 Nginx:
sudo apt update sudo apt install nginx
-
启动并设置 Nginx 自动启动:
sudo systemctl start nginx sudo systemctl enable nginx
-
检查 Nginx 是否正常运行:
sudo systemctl status nginx
-
防火墙开放必要的端口(默认为 80 和 443):
sudo ufw allow 'Nginx Full'
-
访问服务器的 IP 地址或域名,确认 Nginx 正常工作,如果一切正常,您应该会看到默认的欢迎页面。
配置多站点虚拟主机
创建站点目录
为每个站点创建一个单独的目录以存放静态文件和 PHP 脚本:
sudo mkdir -p /var/www/site1.com/public_html sudo mkdir -p /var/www/site2.com/public_html
授予适当的权限给这些目录,以便 Nginx 可以读取它们的内容:
sudo chown -R $USER:$USER /var/www/site1.com/public_html sudo chown -R $USER:$USER /var/www/site2.com/public_html sudo chmod -R 755 /var/www/site1.com/public_html sudo chmod -R 755 /var/www/site2.com/public_html
修改 Nginx 配置文件
编辑 Nginx 主配置文件 /etc/Nginx/nginx.conf
,或者直接修改每个站点的配置文件(推荐方法),我们可以通过在 /etc/nginx/sites-available/
目录下创建新文件来定义每个站点的具体配置。
创建新的站点配置文件:
sudo nano /etc/nginx/sites-available/site1.com
添加以下内容到该文件中:
server { listen 80; server_name site1.com www.site1.com; root /var/www/site1.com/public_html; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
同样地,为第二个站点创建类似的配置文件:
sudo nano /etc/nginx/sites-available/site2.com
server { listen 80; server_name site2.com www.site2.com; root /var/www/site2.com/public_html; index index.html index.htm index.php; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; } location ~ /\.ht { deny all; } }
激活站点配置
要激活刚刚创建的站点配置,请创建符号链接到 sites-enabled
目录:
sudo systemctl start nginx sudo systemctl enable nginx0
测试 Nginx 配置并重启服务
在重新加载 Nginx 之前,最好先测试一下配置文件是否有语法错误:
sudo systemctl start nginx sudo systemctl enable nginx1
如果没有发现任何问题,则可以安全地重新加载 Nginx 以使更改生效:
sudo systemctl start nginx sudo systemctl enable nginx2
SSL 证书的安装与配置
为了提高安全性并启用 HTTPS,您可以为每个站点获取并安装 SSL 证书,可以使用 Let's Encrypt 免费申请证书,并通过 Certbot 自动续订证书。
-
安装 Certbot 和 Nginx 插件:
sudo systemctl start nginx sudo systemctl enable nginx3
-
获取并安装证书:
sudo systemctl start nginx sudo systemctl enable nginx4
-
按照提示操作,Certbot 将自动更新 Nginx 配置以包含 SSL 证书。
通过以上步骤,您已经成功地在单台服务器上配置了多个站点虚拟主机,并启用了 HTTPS,Nginx 提供了强大的功能来优化性能、提高安全性以及简化管理流程,随着业务的发展,您可以继续添加更多的站点,并根据需要调整配置文件,希望本文能为您提供有价值的参考,帮助您更有效地利用 Nginx 实现多站点托管。