当前位置:首页 > 服务器技术 > 正文

Nginx虚拟主机访问控制(手把手教你限制IP、设置权限,小白也能轻松上手)

在使用 Nginx 搭建网站时,我们常常需要为不同的域名或子域名配置独立的“虚拟主机”(Virtual Host),同时对这些站点进行访问控制,比如只允许特定 IP 访问后台、禁止某些地区访问等。本文将从零开始,详细讲解如何在 Nginx 中配置虚拟主机并实现访问控制,即使是刚接触服务器的小白也能轻松掌握。

什么是 Nginx 虚拟主机?

Nginx 虚拟主机是指在同一台服务器上运行多个网站(或应用),每个网站拥有独立的域名、目录和配置规则。这通过 server 块来实现,每个 server 块就是一个虚拟主机。

Nginx虚拟主机访问控制(手把手教你限制IP、设置权限,小白也能轻松上手) Nginx虚拟主机 访问控制 IP限制 Nginx配置 第1张

准备工作

确保你已经安装了 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 限制)

现在我们想只允许公司内网 IP(如 192.168.1.0/24)和自己的公网 IP(如 203.0.113.10)访问该站点,其他 IP 一律拒绝。

修改刚才的虚拟主机配置,在 location / 块中加入 allowdeny 指令:

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,其他人则被拒绝。

常见问题与注意事项

  • 顺序很重要:Nginx 按照 allow/deny 出现的顺序判断,一旦匹配就停止。
  • IPv6 支持:如果你的服务器启用了 IPv6,记得也加上对应的 IPv6 地址规则。
  • 日志排查:访问被拒时,查看 /var/log/nginx/error.log 可帮助定位问题。

总结

通过本文,你已经学会了如何在 Nginx 中配置虚拟主机,并利用 allowdeny 实现灵活的访问控制。无论是保护整个站点还是特定路径,Nginx 都提供了简单高效的解决方案。掌握这些技能,不仅能提升网站安全性,还能更好地管理多站点环境。

记住关键词:Nginx虚拟主机访问控制IP限制Nginx配置——它们是你日后搜索相关问题的关键!