龙空技术网

nginx -> frps -> frpc -> 内网服务器

陈默 102

前言:

此刻同学们对“nginx地图内网”大约比较注重,朋友们都需要学习一些“nginx地图内网”的相关知识。那么小编在网摘上网罗了一些对于“nginx地图内网””的相关文章,希望咱们能喜欢,各位老铁们一起来了解一下吧!

1. Nginx简介

概述

Nginx是一个高性能的HTTP和反向代理服务器,也可以作为邮件代理服务器。它以其高并发处理能力、低内存占用和高效的事件驱动模型而闻名。

其主要功能包括处理静态文件服务、反向代理、负载均衡等。例如,在处理大量的静态网页请求时,Nginx可以快速地将请求对应的静态文件发送给客户端,减少服务器的负载。

配置文件结构

Nginx的配置文件通常是以`.conf`为扩展名,主配置文件一般是`nginx.conf`。它采用层次化的配置结构,包括`http`、`server`和`location`等块。

例如,在`http`块中可以定义全局的HTTP服务器参数,如`server_names_hash_bucket_size`等参数来优化服务器名称的哈希表大小。在`server`块中,可以定义虚拟主机相关的内容,包括监听端口、域名等信息。而`location`块则用于匹配请求的URL路径,对不同的路径可以定义不同的处理规则,如`location / { root /var/www/html; }`就表示将根路径(`/`)的请求指向`/var/www/html`目录下的文件。

反向代理功能实现原理

当Nginx作为反向代理服务器时,它接收来自互联网客户端的请求,然后将这些请求转发到后端的真实服务器。客户端只知道反向代理服务器的IP地址和端口,并不清楚后端服务器的具体信息。

例如,假设客户端请求``,Nginx收到这个请求后,根据配置的后端服务器地址(如` server:8080/api/data`),将请求转发到后端服务器。后端服务器处理完请求后,将结果返回给Nginx,Nginx再将结果发送给客户端。

2. Frp简介

整体架构

Frp是一个可用于内网穿透的高性能的反向代理应用。它主要由两部分组成:frps(服务端)和frpc(客户端)。frps运行在具有公网IP的服务器上,frpc运行在内网服务器或者设备上。

例如,在一个企业内部网络中,有一些内部服务(如内部Web应用、数据库服务等)无法直接从公网访问。通过在公网服务器上部署frps,在内网服务器上部署frpc,就可以将内网服务暴露到公网。

工作原理

frps在公网服务器上监听指定的端口,等待frpc的连接。frpc在内网服务器上启动后,会主动连接frps,并建立一个隧道。

例如,当有外部请求发送到frps监听的端口时,frps会将请求通过已经建立的隧道转发给frpc,frpc再将请求转发给内网服务器上的相应服务。反之,内网服务器的响应也会通过这个隧道返回给frps,最终由frps发送给外部客户端。

3. Frps(服务端)配置和部署

安装

首先需要在具有公网IP的服务器上安装frps。可以从frp的官方网站()下载适合服务器操作系统的版本。

例如,在Linux系统下,下载解压后,可以通过命令`./frps -c frps.ini`来启动frps,其中`frps.ini`是配置文件。

配置文件主要参数

`bind_port`:这是frps监听的端口,用于接收frpc的连接。例如,可以设置为`7000`,表示frps在公网服务器上监听`7000`端口,等待frpc连接。

`vhost_http_port`:如果要实现HTTP服务的穿透,这个参数用于设置HTTP服务监听的端口。假设设置为`8080`,当外部请求发送到公网服务器的`8080`端口时,会通过frp转发到内网的HTTP服务。

`token`:用于身份验证,保证只有授权的frpc可以连接frps。例如,设置一个复杂的字符串作为`token`,如`mysecretfrptoken`,frpc在连接时需要提供相同的`token`才能建立连接。

4. Frpc(客户端)配置和部署

安装

在内网服务器上安装frpc。同样可以从官方网站下载适合操作系统的版本。

例如,在Windows系统下,下载解压后,可以通过命令`frpc.exe -c frpc.ini`来启动frpc,其中`frpc.ini`是配置文件。

配置文件主要参数

`server_addr`:指定frps所在公网服务器的IP地址。例如,如果公网服务器的IP是`1.2.3.4`,则在`server_addr`参数中填写`1.2.3.4`。

`server_port`:填写frps监听的端口,要与frps配置文件中的`bind_port`一致。如frps的`bind_port`设置为`7000`,这里的`server_port`也应该设置为`7000`。

`token`:与frps配置文件中的`token`相同,用于身份验证。

`[proxy_name]`:这是一个自定义的代理名称。例如,`[http_proxy]`表示这是一个HTTP服务的代理配置。在这个代理配置块中,有参数如`local_ip`和`local_port`。`local_ip`是内网服务器上要穿透的服务的IP地址,`local_port`是该服务监听的端口。

假设内网有一个Web服务,IP地址是`192.168.1.100`,监听端口是`80`,则在`frpc.ini`中的`[http_proxy]`配置块可以这样写:

```ini

[http_proxy]

local_ip = 192.168.1.100

local_port = 80

remote_port = 8080

```

其中`remote_port`表示在公网服务器上通过frp转发后的端口,要与frps配置文件中的`vhost_http_port`相对应。

5. 内网服务器相关配置

服务监听地址和端口设置

内网服务器上的服务(如Web服务、数据库服务等)需要正确设置监听地址和端口。如果是只在内网使用的服务,监听地址可以是内网IP地址(如`192.168.1.100`)。

例如,对于一个基于Python的Flask Web服务,在启动代码中可以通过`app.run(host='192.168.1.100', port = 80)`来设置服务监听的地址和端口。

安全设置考虑

由于通过frp将内网服务暴露到了公网,需要加强安全措施。可以在内网服务器上设置防火墙规则,只允许frpc访问需要穿透的服务。

例如,在Linux系统下,可以使用`iptables`命令来设置规则,只允许来自frpc所在IP地址范围(如果可以确定)的请求访问内网服务的端口。同时,在frp的配置文件中,使用复杂的`token`进行身份验证,并且定期更换`token`,防止未经授权的访问。

通过以上步骤,就可以实现通过Nginx(如果需要进行HTTP相关的进一步处理,如负载均衡等可以使用Nginx)、frps、frpc来访问内网服务器上的服务。整个流程是一个完整的从公网访问内网服务的解决方案,其中frp起到了关键的内网穿透作用,Nginx可以作为辅助的反向代理或其他HTTP相关处理工具。

标签: #nginx地图内网