LOADING

frps结合nginx实现访问IP记录方案

运维2个月前发布 杨帆舵手
19 0 0
广告也精彩
欢迎指数:
参与人数:

FRPS结合Nginx实现访问IP记录方案
在网络环境中,了解谁在访问我们的服务器对于安全和数据分析都至关重要。在使用FRP(Fast Reverse Proxy)进行内网穿透的场景下,如何结合Nginx来记录访问者的IP地址是一项重要的任务。FRP作为一种内网穿透工具,允许我们将内网服务暴露给外部访问,而Nginx作为反向代理服务器可以进行复杂的访问控制和记录。本篇文章将详细说明如何使用FRPS结合Nginx来实现对访问IP的记录。?

一、FRP与Nginx的简介

1. FRP 简介
FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,用于通过内网穿透的方式访问内网中的服务。它通过FRPC(客户端)和FRPS(服务器)协同工作,可以轻松将内网服务暴露到公网。
2. Nginx 简介
Nginx是一款开源的高性能HTTP服务器和反向代理服务器,因其轻量和高效而广泛用于处理Web请求。它还可以用作负载均衡器,并且能够进行访问日志记录,帮助系统管理员对访问情况进行详细分析。

二、FRPS与Nginx结合的工作流程 ?️

> 工作流程图 ?:
>
> | 步骤 | 描述 |
> | :—————— | :————————————– |
> | 客户端访问公网地址 | 用户通过公网地址访问FRPS服务器 |
> | FRPS转发请求到Nginx | FRPS将接收到的请求转发到本地Nginx服务器 |
> | Nginx处理并记录请求 | Nginx处理请求并记录下访问的IP和相关信息 |
> | 访问内容返回给用户 | 最终内容通过Nginx和FRPS返回给用户 |
FRP的任务是将公网请求转发到内网服务,而Nginx则在内网中处理这些请求,并且可以详细记录每个访问的IP地址。

三、FRPS与Nginx的配置实现

为了实现FRPS与Nginx结合进行访问IP的记录,我们需要进行以下配置:

1. FRPS 配置

首先,需要配置FRPS来允许请求的转发。FRPS的配置文件通常名为 frps.ini,配置示例如下:

[common]
bind_port = 7000
[web]
listen_port = 8080
proxy_protocol_version = v2

解释

  • bind_port:FRPS监听的端口,客户端会通过这个端口与FRPS通信。
  • [web]:自定义的代理服务名称,用于标识具体的服务。
  • listen_port:FRPS对外提供的端口,即将被Nginx服务处理的流量转发到此端口。
  • proxy_protocol_version:设置代理协议版本,用于向Nginx传递客户端的真实IP信息。

    2. Nginx 配置

    在Nginx中,我们需要设置接受来自FRPS的请求,并记录真实的客户端IP。Nginx的配置示例如下:

    http {
    log_format proxy_log '$proxy_protocol_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent"';
    server {
    listen 80 proxy_protocol;
    server_name example.com;
    location / {
    proxy_pass http://localhost:8081;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $proxy_protocol_addr;
    proxy_set_header X-Forwarded-For $proxy_protocol_addr;
    access_log /var/log/nginx/access.log proxy_log;
    }
    }
    }

    解释

  • log_format proxy_log:定义日志格式,使用 $proxy_protocol_addr来记录客户端的真实IP地址。
  • listen 80 proxy_protocol:使用 proxy_protocol指令来接受来自FRP的代理协议头,以确保可以获取到原始IP信息。
  • proxy_set_header:通过设置 X-Real-IPX-Forwarded-For头部,将真实的客户端IP传递到后端服务。
  • access_log:指定访问日志的位置和格式,将每次访问的信息记录到日志文件中。

    四、验证访问IP的记录

    配置完成后,我们可以通过实际访问来验证是否成功记录了客户端的真实IP。

    1. 启动FRPS和Nginx:确保FRPS和Nginx都启动成功。
    2. 访问公网地址:使用浏览器或者 curl工具访问公网地址。
    3. 查看Nginx访问日志:通过以下命令查看Nginx的访问日志,确认是否记录了客户端的真实IP。

      tail -f /var/log/nginx/access.log

      解释

  • tail -f:实时查看Nginx日志,确认客户端的访问是否被正确记录。

    五、常见问题及解决方案 ⚠️

    1. 未记录真实IP
  • 问题描述:Nginx访问日志中显示的IP始终是FRPS服务器的IP,而非客户端的真实IP。
  • 解决方案:检查Nginx的 proxy_protocol配置是否启用,同时确保FRPS配置了 proxy_protocol_version

    1. 代理协议不兼容
  • 问题描述:Nginx报错,无法解析FRPS的代理协议头。
  • 解决方案:确保FRPS和Nginx都使用相同版本的代理协议(例如 v2),以确保兼容性。

    1. 访问日志权限不足
  • 问题描述:无法查看访问日志,提示权限不足。
  • 解决方案:使用 sudo命令来查看日志,或者调整日志文件的权限设置。

    六、总结与展望 ✨

    通过将FRPS与Nginx结合,我们可以有效地将公网访问请求穿透到内网,并使用Nginx记录下所有访问的真实IP。这种方式不仅保证了内网服务的安全性,也提供了对访问者行为的全面记录,便于后续的分析与安全审计。
    FRPS解决了内网穿透的问题,而Nginx作为反向代理可以灵活地处理请求、记录日志、实现负载均衡等功能。这种组合使得企业和开发者可以在保护内网安全的同时,提供稳定可靠的对外服务。
    > ? 小贴士:为了确保日志的准确性和防止攻击者伪造IP地址,建议只允许可信的FRPS客户端连接到Nginx,同时在Nginx中配置访问控制策略以提升安全性。

此站内容质量评分请点击星号为它评分!

您的每一个评价对我们都很重要

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...