内网穿透源码,开源版

不会Docker部署请勿下载,不是PHP源码

域名映射

 

域名映射是将指定端口映射绑定到某一个子域名上,通过直接访问域名的方式,达到访问被代理服务的目的。

#域名映射能解决什么问题?

  • 1、当服务端端口需要经常变动的时候,可以通过固定域名的方式,使得开发调试能够长期稳定的进行,不用每次更改访问地址。
  • 2、使用域名可以使用有意义的名称方便记忆
  • 3、调试某些第三方回调时,回调地址不能填写IP+端口的形式,此时需要域名来完成

#域名映射的大致流程?

例如你有一个已备案的域名:asgc.fun,以下是使用域名映射的大致流程

#情况1:代理服务端使用80端口

  • 1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP
  • 2、代理服务端app.yml配置域名:proxy.asgc.fun,部署
  • 3、服务端管理后台新建端口映射,协议选择:HTTP,设置好子域名,如:test1
  • 4、配置好客户端并启动,代理映射完成
  • 5、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务

#情况2:代理服务端不使用80端口,80端口被nginx占用

假设代理服务端使用82作为HTTP代理端口

  • 1、DNS解析配置泛域名解析 proxy.asgc.fun 指向代理服务端IP
  • 2、nginx 80端口下将 *.proxy.asgc.fun 请求转到82端口,并附带原有请求头(特别是Host
  • 3、代理服务端app.yml配置域名:proxy.asgc.fun,部署
  • 4、服务端管理后台新建端口映射,协议选择:HTTP,设置好子域名,如:test1
  • 5、配置好客户端并启动,代理映射完成
  • 6、通过访问: http://test1.proxy.asgc.fun 实现访问被代理服务

#所有的代理映射都能绑定域名吗?

不行的。之所以能实现域名绑定,原因是HTTP请求附带了Host请求头,包含了请求的域名信息,代理服务端能根据请求的域名做分发。而TCP协议本身并不包含域名,因此无法实现。 所以,目前只有HTTP(涵盖HTTPS)协议能支持。

#代理服务端使用非80端口时,nginx配置示例

server {
    listen       80;
    # 此处配不配貌似不影响
    server_name  localhost *.neutrino-proxy.asgc.fun;

    location / {
        if ($http_host ~* "(.*?).neutrino-proxy.asgc.fun") {
           # 转发到代理服务端HTTP代理端口
           proxy_pass http://localhost:8899; 
        }

        tcp_nodelay     on;
        proxy_set_header Host            $host;
        proxy_set_header X-Real-IP       $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

    root   html;
        index  index.html index.htm;
    }
}

HTTPS配置

 

#基础说明

  • 在中微子代理中,HTTP的定位是:为ip+端口的访问形式增加域名访问的支持。因此:

    • 如果端口映射正确配置了域名,那么该映射同时支持IP+端口、域名2种访问形式。
    • 如果端口映射未配置域名,那么只能以ip+端口的形式访问,此时等价于选择TCP协议。
  • 在中微子代理中,HTTPS作为HTTP的一种增强行为,不作为一个单独的协议。因此:

    • 在端口映射中只需要选择HTTP即可
    • 若端口映射未正确配置域名,那么同理,此时等价于选择TCP协议。
    • 若端口映射配置了域名,但是未正确配置HTTPS端口、证书,那么此时可以通过域名访问,但不支持HTTPS
    • 若端口映射配置了域名,且正确配置了HTTPS端口、证书,那么此时可以通过IP+端口、http域名、https域名3种形式访问

#HTTPS配置流程

  • 按照域名映射流程,完成域名的配置
  • 在服务端配置域名的HTTPS证书信息(此处应该是通配符证书)

#HTTPS端口问题

  • 与HTTP类似,HTTPS也有一个默认端口:443,默认情况下需要占用服务端443端口
  • 如果代理服务端不能独占443端口,此处可以指定任意端口,但需要在nginx中配置443端口的转发规则。此处与域名映射中代理服务端不使用80端口的情况类似

源码截图:

本站所有资源来源于网络,仅限用于学习研究;无任何技术支持!不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除内容。如果您喜欢,请支持正版。如有侵权请邮件与我们联系处理。