我现在开发并维护一个学校网站,这个学校网站的空间就放在学校内部的服务器上,但是有点奇葩,它是在一个服务器上划分一个虚拟机给我,装的CentOS, 我有root账号;
服务器跟外网之间有一个类似于防火墙的设备 or 软件,导致我在虚拟机里做的任何安全设置都形同虚设,完全得按着这个"防火墙"的规则来,打个比方:
1.不管我在虚拟机中打开多少端口,外部都只能访问虚拟机的80端口,导致我的虚拟机没办法发送邮件,因为邮件端口被屏蔽;
-- 也就是说,外部只能访问我的网站,而我却没办法给网站会员发送邮件(找回密码的邮件);
2.在虚拟机中访问Localhost,几乎可以使用任何函数,但是与外界通信时,就会被屏蔽掉一部分他们认为危险的函数,比如我在虚拟机中访问Localhost, 可以查看phpinfo(),但是外网访问时, phpinfo()里的服务器信息,全部都被拦截;
-- 也就是说, 我在外网访问含有phpinfo()的网页时,只能看到空白页;
3.最恼人的就是第三点,虚拟机的php,和外部服务器通信几乎都被隔断,我用root账号登录虚拟机后,可以发现php的curl函数没有被禁用,系统本身的curl也没有被禁用, 都可以curl本地的网站,比如127.0.0.1,但是,无法curl外部的网站(虚拟机的DNS是没有问题的,可以nslookup);
所以我的问题来了,我开发的这个网站,需要使用到百度的云推送,需要和百度的服务器通过curl通信,可是现在被屏蔽了,好吧,然后我又想了一个办法:
1.我在外部建立一个网站:
abc.com, 可以接受GET参数;
2.当我从任何地方访问abc.com/index.php/tit/hello/content/nihao时,我就可以获取"tit"和"content"两个参数值;
3.获取到参数后,我通过abc.com与百度的服务器进行通信,把参数发给百度,就OK了;
这样通过abc.com做中转,就不需要通过虚拟机使用curl操作了,可以在abc.com中使用任何函数,打开任何端口;
可是!
尼玛!
我现在在虚拟机中,连访问abc.com都做不到哇!
我试过了种种办法,fopen, file_get_contents, curl, fsockopen, 都不可以了,
我现在只需要访问一下abc.com/参数/xx这个网址,就能把参数传过去,可是,始终没办法访问,请问大家,有什么办法可以让我在虚拟机中访问abc.com吗(虚拟机的DNS是没有问题的,可以nslookup)?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/125191
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.