美文网首页
70%Java工程师都需要!如何把本地(内网)项目映射到外网

70%Java工程师都需要!如何把本地(内网)项目映射到外网

作者: 源码时代官方 | 来源:发表于2020-12-16 09:51 被阅读0次

我们在写项目时一般都是用ip就可以直接测试了。但有的业务场景需要我们用到域名。这时候我们去申请一个域名就行了,但此时我们申请的域名协议是http的不是https的。对接微信时很多情况是用的https 。且在对接微信是我们需要边对接边调试。如果直接把项目打包到服务器,调试时会很麻烦,所以这篇文章我们要讲的是“如果把本地(内网)项目以https协议的方式映射到外网”

一:首先我们先在百度百科了解一下什么是https

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面

从上面我们可以得知 https比http安全一般用于支付,https的安全基础是SSL。所以我们要配置https协议的时候需要用得到SSL证书。

二 需要准备的环境

我们要做的事情是把本地的Springboot项目通过https 的方式映到外网去。

环境

  1. springBoot项目
  2. 域名 (我在阿里云购买的)
  3. SSL证明(阿里云免费申请)
  4. Ngrok 内网穿透(免费把本地的项目映射到外网)http://www.ngrok.cc/

三,流程图

image

1. 浏览器输入域名会访问的你申请的域名

2. 访问到底域名会解析到你申请的内网穿透的域名

3. 内网穿透访问到你本地的项目

4. 你本地项目重定向到443端口

5. 浏览器从原来的http变成https

四项目实现​​

1.首先去阿里云弄一个免费的SSL证书

image

​这里选择服务器类型tomcat 因为springboot内嵌了tomcat 用这种方式配置比较简单

下载后的ssl证书 放到项目里面的resource路径下

2 Springboot里直接修改 application配置文件

这里一定要注意 是 key-store 和 key-store-password 我在配置时写成了 key-password 弄了很久没找到原因

image

现在实现的效果是

可以用https我们的项目 但是我如果直接输入域名用http访问就访问不到。

因为http是默认80端口 而https 是默认的 443 端口。

所以我在我的启动类里面写一段代码 。访问http 是自动跳转到https

EmbeddedServletContainerFactory 可以因为你的spring boot 版本 过高没有这个class 那么你需要去你对应spring boot版本的class

public class HuahaiApplication {

public static void main(String[] args)

{

SpringApplication.run(HuahaiApplication.class, args);

}

/**

  • 配置一个 TomcatServletWebServerFactory bean

  • 将http 重定向到 https

  • @return

*/

/**

  • it's for set http url auto change to https

*/

@Bean

public EmbeddedServletContainerFactory servletContainer(){

TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory(){

@Override

protected void postProcessContext(Context context) {

SecurityConstraint securityConstraint=new SecurityConstraint();

securityConstraint.setUserConstraint("CONFIDENTIAL");//confidential

SecurityCollection collection=new SecurityCollection();

collection.addPattern("/*");

securityConstraint.addCollection(collection);

context.addConstraint(securityConstraint);

}

};

tomcat.addAdditionalTomcatConnectors(httpConnector());

return tomcat;

}

//配置http转https

@Bean

public Connector httpConnector(){

Connector connector=new Connector("org.apache.coyote.http11.Http11NioProtocol");

connector.setScheme("http");

connector.setPort(80);

connector.setSecure(false);

connector.setRedirectPort(443);

return connector;

}

}

3 我可以把我本地的服务映射到外网去访问借助一个 sunny-ngrok

image

去域名管理中心解析你的域名

image

本地启动ngrok 的服务

image

效果

输入你的域名 不写https 也会自动跳转到https 这里是因为我刚刚在启动类里面配置了 重定向

image

image

相关文章

  • 70%Java工程师都需要!如何把本地(内网)项目映射到外网

    我们在写项目时一般都是用ip就可以直接测试了。但有的业务场景需要我们用到域名。这时候我们去申请一个域名就行了,但此...

  • 本地电脑搭建服务器,供外网访问(java后端服务)

    原理: 利用花生壳做端口映射, 把内网端口映射到外网端口 (内网穿透) 1、 把的java服务启动起来(因为个...

  • 内网图片域名替换

    最近有个需求就是项目的图片是外网地址。内网需要显示这些图片,但是内网的图片地址映射过来的是ip。所以需要能够把图片...

  • 什么是端口映射?实现端口映射的方法和步骤

    工作中,有时需要在外网中访问自己的内网电脑或者服务器,这个时候就需要做端口映射,将自己电脑的内网端口映射到外网才能...

  • frp内网穿透

    1-内网穿透 内网穿透即内网映射,可以将局域网变公网,从而可以让外网访问本地局域网内的服务。内网穿透原理技术有这么...

  • 内网穿透|FRP|NGROK|一步搞定

    内网穿透从字面上来说就是将本地的服务器映射到外网可访问 设想下 如果有已知的公网服务器,那内网的本地服务就可以映射...

  • iMac如何使用frp穿透内网

    有时需要把内网部署的站点映射到外网,让其别人也能访问到,例如做微信相关开发时需要把内网映射到外网,让微信服务器能访...

  • 如何申请公网IP,外网访问内网群晖NAS、Web、FTP

    平时我们在公司,或者家里安装了很多内网服务,往往有时候需要在外网中访问内网服务。这时候如何才能解决内网端口映射的问...

  • 内网映射外网

    ngrok 内网映射 官网下载 https://ngrok.com/ 下载压缩包、后解压; 授权命令 根据需要,运...

  • 百度

    1.关于网络地址转换映射,哪项不正确? 本地到全局IP地址映射。 内网到英特网的地址映射。 全局到本地IP地址映射...

网友评论

      本文标题:70%Java工程师都需要!如何把本地(内网)项目映射到外网

      本文链接:https://www.haomeiwen.com/subject/rmkngktx.html