项目设置内网 IP 访问实现方案

在我们平常的开发工作中,项目开发、测试完成后进行部署上线。比如电商网站、新闻网站、社交网站等,通常对访问不会进行限制。但是像企业内部网站、内部管理系统等,这种系统一般都需要限制访问,比如内网才能访问等。那么一个网站应该如何限制特定的 IP 访问呢?今天我们来总结下实现的几种方法。

一:通过 nginx 配置

1:可以在 nginx.conf 中设置 IP 访问限制,示例如下:

复制代码
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;

    server {
        listen 80;
        server_name localhost;
        
        # 只允许某个特定 IP 地址访问
        allow 192.168.1.1;
        deny all;

        # 允许访问的 IP 列表,这个命令表示允许的 IP 范围为 192.168.1.0 到 192.168.1.254
        allow 192.168.1.0/24;
        deny all;

        # 拒绝某个特定 IP 访问
        deny 192.168.1.1;
        allow all;

        # 拒绝该 IP 列表访问 
        deny 192.168.1.0/24;
        allow all;

        location / {
           root /usr/share/nginx/html;
           index index.html index.htm;
        }
    }
}

2:当前访问的 IP 地址在 nginx 配置允许的 IP 列表中时,访问页面如下:

3:当前访问的 IP 地址不在 nginx 配置允许的 IP 列表中时,会看到访问拒绝,访问页面如下:

4:总结

设置允许访问的 IP:

(1):只允许某个特定 IP 地址访问,如表示只有 IP 地址为 192.168.1.1 能访问,示例如下:

复制代码
allow 192.168.1.1;
deny all;

(2):允许访问的 IP 列表,如表示 192.168.1.0 到 192.168.1.254 的 IP 地址能访问,示例如下:

复制代码
allow 192.168.1.0/24;
deny all;

设置不能访问的 IP:

(1):设置某个特定 IP 地址访问,如表示只有 IP 地址为 192.168.1.1 不能访问,示例如下:

复制代码
deny 192.168.1.1;
allow all;

(2):不允许访问的 IP 列表,如表示 192.168.1.0 到 192.168.1.254 的 IP 地址不能访问,示例如下:

复制代码
deny 192.168.1.0/24;
allow all;

二:通过防火墙设置

在 Centos 6 及之前版本,iptables 作为防火墙管理工具,在 Centos 7 及之后版本,使用 firewalld作为防火墙管理工具。

1:使用 iptables 限制 IP 访问

设置允许访问的 IP:

(1):允许某个特定 IP 访问,示例如下:

复制代码
# 只允许 192.168.1.1 能访问
iptables -A INPUT -s 192.168.1.1 -j ACCEPT

# 保存规则命令
service iptables save

(2):允许访问的 IP 段,示例如下:

复制代码
# 允许 192.168.1.0 - 192.168.1.254 能访问
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

# 保存规则命令
service iptables save

设置不能访问的 IP

(1):不允许某个特定 IP 访问,示例如下:

复制代码
# 不允许 192.168.1.1 访问
iptables -A INPUT -s 192.168.1.1 -j DROP

# 保存规则命令
service iptables save

(2):不允许访问的 IP 段,示例如下:

复制代码
# 不允许 192.168.1.0 - 192.168.1.254 访问
iptables -A INPUT -s 192.168.1.0/24 -j DROP

# 保存规则命令
service iptables save

2:使用 firewalld 限制 IP 访问

设置允许访问的 IP:

(1):允许某个特定 IP 访问,示例如下:

复制代码
# 只允许 192.168.1.1 能访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" accept'

# 重新加载防火墙
firewall-cmd --reload

(2):允许访问的 IP 段,示例如下:

复制代码
# 允许 192.168.1.0 - 192.168.1.254 能访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept'

# 重新加载防火墙
firewall-cmd --reload

设置不能访问的 IP:

(1):不允许某个特定 IP 访问,示例如下:

复制代码
# 不允许 192.168.1.1 访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.1" reject'

# 重新加载防火墙
firewall-cmd --reload

(2):不允许访问的 IP 段,示例如下:

复制代码
# 不允许 192.168.1.0 - 192.168.1.254 访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" reject'

# 重新加载防火墙
firewall-cmd --reload

三:总结

以上为常见的设置服务内网访问的方法。可以通过 nginx 配置或者防火墙设置。通过 nginx 实现修改 nginx.conf 配置文件即可。通过防火墙实现,在 Centos 6 及以前版本使用 iptables 作为防火墙,在 Centos 7 版本及以后使用 firewall 作为防火墙。可以设置允许某个 IP 访问、允许某个 IP 段(如 192.168.1.0/24 即表示 192.168.1.0 - 192.168.1.254)访问、设置不允许某个 IP 访问、不允许某个 IP 段访问。如果需要根据 URL 路径实现精准的访问控制,推荐使用 nginx。如果是网络层对访问 IP 或端口的限制,推荐使用防火墙。

相关推荐
tonydf1 天前
Nginx爆新的RCE漏洞!别担心,平滑升级即可。
后端·nginx
曹牧1 天前
Nginx 504
运维·nginx
rockmelodies1 天前
CentOS Stream 源码编译安装 Nginx 1.31.0(静态依赖版)
运维·chrome·nginx
成为你的宁宁1 天前
【Prometheus监控Nginx/Mysql/Redis/Docker/Rabbitmq】
mysql·nginx·prometheus
阿里-于怀1 天前
告别 Ingress Nginx:云原生 API 网关 Gateway API 使用指引
nginx·云原生·gateway
難釋懷1 天前
Nginx应用场景
运维·nginx
持梦远方1 天前
Nginx 静态资源挂载与前端部署实战笔记
linux·前端·笔记·nginx
艾莉丝努力练剑1 天前
【Linux网络】Linux 网络编程:HTTP(四)从手写服务器到生产级 Nginx 与 cpp-httplib 实战
linux·运维·服务器·网络·c++·nginx·http
Linux运维技术栈1 天前
一次暴力枚举攻击的防御实践:从 IP 封禁到 WAF,再到 Nginx+Lua 业务层防御
tcp/ip·nginx·安全·lua·云服务器
周杰伦的稻香2 天前
Ollama访问限制
nginx·ai