日期:2014-05-19  浏览次数:20811 次

一台内网机器WEB服务做成内外网都能同时访问
内网机器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还是不显示。

怎么能让页面完全显示出来?

------解决方案--------------------
<iframe src="127.0.0.1:8080/index.jsp"/>
不要写本地地址吧,换成真实ip地址。
------解决方案--------------------
除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,更不要说配置反向代理,所以只能供你以后参考了。