在使用 Nginx 搭建网站时,我们常常需要为不同的域名或子域名配置独立的“虚拟主机”(Virtual Host),同时对这些站点进行访问控制,比如只允许特定 IP 访问后台、禁止某些地区访问等。本文将从零开始,详细讲解如何在 Nginx 中配置虚拟主机并实现访问控制,即使是刚接触服务器的小白也能轻松掌握。
Nginx 虚拟主机是指在同一台服务器上运行多个网站(或应用),每个网站拥有独立的域名、目录和配置规则。这通过 server 块来实现,每个 server 块就是一个虚拟主机。
确保你已经安装了 Nginx,并具备基本的命令行操作能力。你可以通过以下命令检查是否已安装:
nginx -v 假设我们要为 example.com 创建一个虚拟主机,网站文件放在 /var/www/example.com 目录下。
首先创建目录并写入一个测试页面:
sudo mkdir -p /var/www/example.comsudo echo "<h2>欢迎访问 example.com!</h2>" > /var/www/example.com/index.html 然后编辑 Nginx 配置文件(通常位于 /etc/nginx/sites-available/):
sudo nano /etc/nginx/sites-available/example.com 写入以下内容:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html; location / { try_files $uri $uri/ =404; }} 启用该站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/sudo nginx -t # 测试配置是否正确sudo systemctl reload nginx 现在我们想只允许公司内网 IP(如 192.168.1.0/24)和自己的公网 IP(如 203.0.113.10)访问该站点,其他 IP 一律拒绝。
修改刚才的虚拟主机配置,在 location / 块中加入 allow 和 deny 指令:
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html; location / { allow 192.168.1.0/24; # 允许内网 allow 203.0.113.10; # 允许特定公网IP deny all; # 拒绝其他所有IP try_files $uri $uri/ =404; }} 保存后重新加载 Nginx:
sudo nginx -tsudo systemctl reload nginx 现在,只有指定的 IP 才能正常访问网站,其他用户会看到 403 Forbidden 错误。
有时我们只想保护后台路径(如 /admin),而首页对所有人开放。可以这样配置:
location /admin { allow 203.0.113.10; deny all;} 这样,只有你的 IP 能访问 http://example.com/admin,其他人则被拒绝。
allow/deny 出现的顺序判断,一旦匹配就停止。/var/log/nginx/error.log 可帮助定位问题。通过本文,你已经学会了如何在 Nginx 中配置虚拟主机,并利用 allow 和 deny 实现灵活的访问控制。无论是保护整个站点还是特定路径,Nginx 都提供了简单高效的解决方案。掌握这些技能,不仅能提升网站安全性,还能更好地管理多站点环境。
记住关键词:Nginx虚拟主机、访问控制、IP限制、Nginx配置——它们是你日后搜索相关问题的关键!
本文由主机测评网于2025-11-26发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/202511700.html