一台内网机器WEB服务做成内外网都能同时访问

cheunyu 2012-07-22 07:44:58
内网机器IP:172.29.30.4

内网上有PHP页面(主页),http://172.29.30.4:81/index.html
内网上有TOMCAT页面(引用页),http://172.29.30.4:8080/index.jsp
index.html里iframe里引用页。<iframe src="127.0.0.1:8080/index.jsp"/>

网络做了端口映射,把内网81端口映射到外网8080.

1.现在在公网上通过ip:8080访问到了内网PHP页面index.html,但是应用的index.jsp不显示。
2.内网用其他机器访问ip:8080问到了内网PHP页面index.html,但是应用的index.jsp还是不显示。

怎么能让页面完全显示出来?
...全文
384 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cheunyu 2012-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

除1楼所说的问题外,也即:
<iframe src="127.0.0.1:8080/index.jsp"/>
应该修改为:
<iframe src="172.29.30.4:8080/index.jsp"/>

更大的问题是,你并没有将内网8080的端口映射到外网,当然外网就绝对访问不到Tomcat了。

这个可以考虑多暴露端口映射到外网,最好考虑端口保持一致,也就是:
……
[/Quote]

谢谢回答,推荐的Apache做反向代理我真心不懂,以后有时间再研究吧.我是这样修改的.
1.确实要修改成172.29.30.4,这样内网的机器就可以访问到了.
2.新暴露一个端口映射到外网,即tomcat的8080端口.保证外网上访问:外网IP:8080能看到tomcat小猫咪.
3.加了来访IP判断,如果访问者是内网用户,iframe引用内网IP.反之,引用外网IP.js如下

<script type="text/javascript" language="javascript">
function GetLocalIPAddress()
{
var obj = null;
var rslt = "";
try
{
obj = new ActiveXObject("rcbdyctl.Setting");
rslt = obj.GetIPAddress;
obj = null;
}
catch(e)
{

}
return rslt;
}
var ipAddress = GetLocalIPAddress();
if(ipAddress.indexOf("172")>-1) {
document.getElementById("mapFrame").src="http://172.29.30.4:8080/webname/";
}else {
document.getElementById("mapFrame").src="http://公网IP:8081/webname/";
}
</script>

结贴.
ylovep 2012-07-22
  • 打赏
  • 举报
回复
要做路由器 端口映射
MiceRice 2012-07-22
  • 打赏
  • 举报
回复
除1楼所说的问题外,也即:
<iframe src="127.0.0.1:8080/index.jsp"/>
应该修改为:
<iframe src="172.29.30.4:8080/index.jsp"/>

更大的问题是,你并没有将内网8080的端口映射到外网,当然外网就绝对访问不到Tomcat了。

这个可以考虑多暴露端口映射到外网,最好考虑端口保持一致,也就是:
外网81 <--> 内网81
外网8080 <--> 内网8080



其实:你这里面牵扯两个应用。这种情况下,一般建议装个Apache做反向代理,将应用端口等全部统一起来,并设置URL自动转换,便于外网做映射。

也即是说:
1、配置端口映射,外网8080映射到内网的80;
2、安装Apache,开放80端口;
3、Apache配置反向代理:按照不同虚拟目录的方式将两个应用暴露出去,比如:
http://外网IP:8080/php/ --> http://172.29.30.4:81/
http://外网IP:8080/tomcat/ --> http://172.29.30.4:8080/

不过楼主估计你不太熟悉Apache,更不要说配置反向代理,所以只能供你以后参考了。
brightyq 2012-07-22
  • 打赏
  • 举报
回复
<iframe src="127.0.0.1:8080/index.jsp"/>
不要写本地地址吧,换成真实ip地址。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧