(一)部署前提

1、要素与工具

条件

下载地址

描述

公网网址

外部正常访问的网址

两个公网开放端口

传输请求信息的接口

公网服务器

做为中转服务器

内网服务器

做为项目部署服务器

nginx

http://nginx.org/en/download.html

代理工具

frp

https://github.com/fatedier/frp/releases

内网穿透工具

winsw

https://github.com/winsw/winsw/releases

做成Windows服务的工具(非必须)

2、安装与配置

服务器

安装工具

描述

公网代理服务器

frp(frps)、nginx、winsw

做对外访问和穿透配置

内网项目服务器

frp(frpc)、winsw

做穿透对接配置

(二)配置公网代理服务器

1、配置nginx

配置文件目录:nginx安装目录下的 打开conf中nginx.conf
相关配置:

#第一个项目内网渗透的代理配置;
	server {
#设置项目可上传文件大小10000M;
		client_max_body_size 10000M;
#设置可访问的端口33301;设置访问地址,我这里公网地址就是本机IP所以就写localhost;
    		listen       33301;
    		server_name localhost;

    		location / {
#设置外网访问后跳转的地址,frp内网渗透指定端口7000
        		proxy_pass  http://127.0.0.1:7000;
        		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        		proxy_set_header Host $http_host;
        		proxy_set_header X-NginX-Proxy true;
        		proxy_http_version 1.1;
        		proxy_set_header Upgrade $http_upgrade;
        		proxy_set_header Connection "upgrade";
        		proxy_max_temp_file_size 0;
        		proxy_redirect off;
        		proxy_read_timeout 240s;
    		}

    		error_page   500 502 503 504  /50x.html;
    		location = /50x.html {
        		root   /usr/share/nginx/html;
    			}
		}

2、配置frps

(1) 解压frp_0.38.0_windows_386.zip安装包到指定目录,内容如下

nginx内网映射 nginx实现内网穿透_服务器

(2) 修改文件夹名称frp_0.38.0_windows_386为项目简称如frp-jenkins,并删除frpc相关文件,如下图所示。

nginx内网映射 nginx实现内网穿透_配置文件_02

(3) 编辑frps.ini配置文件

[common]
#开放的、可被内网服务器访问的端口
bind_port = 33302
#指定的、nginx代理跳转的端口和外网访问地址(这里的IP要根据自己开通的公网地址写)
vhost_http_port = 7000
subdomain_host = 192.168.199.330
#身份验证,与客户端一致
token = woesk32SKE349$le123#234do
#frps监控,本机7501端口,用户密码登录,可以查看谁链接了
dashboard_addr = 0.0.0.0
dashboard_port = 7501
dashboard_user = admin
dashboard_pwd = admin
#设置日志显示级别
log_level = info
#设置日志最大天数
log_max_days = 999
#超时时间
heartbeat_timeout = 90
#最大链接数
max_pool_count = 10

3、配置启动文件

(1)创建文本文档-重命名为start.bat.
(2)编辑文件-填写启动命令并保存.

frps.exe -c frps.ini

(3)若不做开机自启,直接双击bat文件启动即可。

4、添加进Windows服务,设为开机自启(非必须)

(1) 将winsw.exe程序移动到frp目录下,新建文本文档-重命名为winsw.xml-编辑配置文件。

<service>
#所在上级目录名称
<id>frp-jenkins</id>
#服务名称
<name>frp-jenkins</name>
#详情介绍
<description>jenkins</description>
#命令
<executable>frps</executable>
#指定配置文件的命令
<arguments>-c frps.ini</arguments>
<onfailure action="restart" delav="60 sec"/>
<onfailure action="restart" delay="120 sec"/>
<logmode>reset</logmode>
</service>

(2) 在当前目录下打开cmd窗口,使用添加服务命令,添加到服务中。

#添加服务命令
winsw install

#启动服务命令
winsw start

#删除服务命令
sc delete 服务名

(3) 打开服务程序,查看是否添加成功,启动类型设置为【自动】,并手动【启动】此服务。

nginx内网映射 nginx实现内网穿透_配置文件_03

(三)配置内网项目服务器

1、配置frpc

(1) 解压frp_0.38.0_windows_386.zip安装包到指定目录,内容如下

nginx内网映射 nginx实现内网穿透_运维_04

(2) 修改文件夹名称frp_0.38.0_windows_386为项目简称如frp-jenkins,并删除frps相关文件。(下图中log文件是启动后生成的日志文件,不必在意,第一次安装是没有的)

nginx内网映射 nginx实现内网穿透_运维_05

(3) 编辑frpc.ini配置文件

[common]
tls_enable = true
#公网地址
server_addr = 192.168.199.330
#公网设置的端口
server_port = 33302
#身份验证,与公网一致
token = woesk32SKE349$le123#234do
#管理页面
admin_addr = 127.0.0.1
admin_port = 7402
admin_user = admin
admin_pwd = admin
#日志
log_file = ./frpc.log
log_level = info
#本地项目访问地址、端口
[192.168.199.330]
type = http
local_ip = 127.0.0.1
local_port = 9000
#外网域名
custom_domains = 192.168.199.330

2、配置启动文件

(1)创建文本文档,并重命名为start.bat.
(2)编辑文件-填写启动命令并保存

frpc.exe -c frpc.ini

(3)若不做开机自启,直接双击bat文件启动即可。

3.添加进Windows服务,设为开机自启(非必须)

(1) 将winsw.exe程序移动到frp所在目录下,新建文本文档-重命名为winsw.xml-编辑配置文件。

<service>
#所在目录
<id>frp-jenkins</id>
#服务名称
<name>frp-jenkins</name>
#详情介绍
<description>jenkins</description>
#命令
<executable>frpc</executable>
#指定配置文件的命令
<arguments>-c frpc.ini</arguments>
<onfailure action="restart" delav="60 sec"/>
<onfailure action="restart" delay="120 sec"/>
<logmode>reset</logmode>
</service>

(2) 添加到服务。

#添加服务命令
winsw install

#启动服务命令
winsw start

#删除服务命令
sc delete 服务名

(3) 打开服务,查看是否添加成功,启动类型设置为【自动】,并手动【启动】此服务。

nginx内网映射 nginx实现内网穿透_nginx内网映射_06

(四)访问测试

(1)所有配置完成后启动服务.
(2)在外网环境访问公网地址,查看能否正常访问内网项目;