在端口80被阻止的网络上创建阶段环境

时间:2008-10-04 21:46:28

标签: language-agnostic mod-rewrite hosting infrastructure

我目前使用本地网络服务器允许客户预览某些应用程序,并允许下载我的开源库的“夜间构建”。

问题是我改变了我的ISP,现在我的端口80被阻止了。

Altough我知道我可以轻松更改Apache服务器上的端口,除非别无选择,否则我想避免使用它。

您是否知道任何第三方服务(免费或付费)可以将端口转发到我的网站,使其对访问它的人透明?

我听说的另一个想法是使用我当前的webhost中的mod重写来重写我的域名,但我也不愿意走这条道路。除此之外,你知道任何真正有效的.htaccess例子吗?我试过这个:

RewriteEngine on
RewriteRule ^/(.*) http://www.example.com:8080/$1

但它似乎没有起作用。

7 个答案:

答案 0 :(得分:2)

“并以透明的方式再次回到客户身上......”将由​​NAT处理,以免出现问题。

要处理从一个字符串到另一个字符串的请求转换,这是一个问题,因为您需要在请求到达服务器之前对其进行转换。查看某种URL转发服务

http://www.dnsexit.com/Direct.sv?cmd=webforward

您还可以在提供商服务器上设置单独的站点,并将其转发到服务器上的特定地址/链接。

希望这有帮助!

答案 1 :(得分:1)

如果端口80被阻止,则通过动态服务进行路由不会有帮助,除非客户端指定域中的新端口。

让您的本地路由器从新端口(例如8080)到端口80的“端口转发”流量。让所有内容保持不变。

使用DynDNS.org创建一个帐户并设置您的动态服务。然后让您的客户执行http://mydomain.com:8080

应该做的伎俩

仍然关注罗尔夫的建议,因为他们不是真正的ISP,......认真。

由于

答案 2 :(得分:1)

如果您无法让ISP为您打开端口80,并且您无法切换ISP,请使用htacccess重定向指令:

重定向301 / http://yourserver.com:8000/

用户可能会注意到重定向,但他们可能不在乎。

答案 3 :(得分:1)

  

我想要的是客户   类型   http://myaddress.com/hello/there?a=1&b=2   它被翻译成了   http://mylocalserver.com:8080/hello/there?a=1&b=2   又回到了客户的一个   透明的方式。

我相信这是您正在寻找重定向任何网址的Apache RewriteRule:

RewriteRule ^(.*)$ http://mylocalserver.com:8080$1 [R]

从那时起,客户将浏览mylocalserver.com:8080,这就是他们在地址栏中看到的内容。如果你的意思是“又回来”,他们仍然认为他们正在浏览myaddress.com,那么你所说的就是重写代理服务器。

通过这个,我的意思是你不仅要在HTTP标题中重写所有URL,还要在HTML内容中重写所有URL(即在HTML上进行正则表达式搜索/替换),并解码,重写和重新发送所有GET,POST ,PUT数据。我曾经写过这样一个代理人,让我告诉你这不是一个微不足道的练习,虽然这个原则看起来很简单。

我想说,如果您可以让重定向工作并让他们从那时起浏览mylocalserver.com:8080,那就很高兴。

答案 4 :(得分:1)

好吧,尽管我很欣赏答案,但我对最终结果并不满意。我希望我的ISP更改对我的客户是透明的,我认为我设法让它成功。

这就是我的所作所为:

我雇用了一台便宜的VPS服务器 - VPSLink - 并选择了最便宜的计划:64Mb RAM,2Gb HD和1Gb月流量。经过一生10%的折扣后,每月只需7.16美元,这项工作非常实惠,你可以获得沙盒VPS服务器作为奖励。托管似乎到目前为止很好 - 没有问题。如果你想给它一个镜头,你可以从它的网站注册,如上所示或通过推荐代码。互联网上有一堆,你只需要搜索。另外,如果你愿意,我可以很容易地为你创建一个,只需对这个答案发表评论:你可以获得10%的折扣,我可以免费获得一个月。我不会直接在这里发布,因为这似乎是这篇文章背后的意图 - 事实并非如此。

此帐户不受管理,但提供root访问权限。然后我将apache配置为我的端口80请求的代理,透明地将它们转发到我的本地网站8081端口。

以下是我的Apache的httpd.conf配置文件的一些片段。

VPS服务器配置:

<VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias www.mydomain.com *.mydomain.com
    RewriteEngine On
    RewriteCond %{HTTP_HOST} (.*)\.mydomain\.com [NC]
    RewriteRule (.*) http://mylocalserverdns.mydomain.com:8081/%1$1 [P]
</VirtualHost>

这使得像http://subdomain1.mydomain.com/script?a=b这样的请求在服务器端透明地转发到http://mylocalserverdns.mydomain.com:8081/subdomain1/script?a=b,所以我可以从那里做任何我想做的事。

在我的本地服务器上,我做了同样的事情来分发我的子域处理程序。例如,我有两个在本地端口8088和8089上运行的Java服务器应用程序。我所要做的只是另一个代理转发,现在内部

本地服务器配置:

<VirtualHost *:8081>
    ServerName mylocalserverdns.mydomain.com

    ProxyPass /app1 http://127.0.0.1:8088
    ProxyPassReverse /app1 http://127.0.0.1:8088
    ProxyPassReverse /app1 http://mylocalserverdns.mydomain.com:8088/app1

    ProxyPass /app2 http://127.0.0.1:8089
    ProxyPassReverse /app2 http://127.0.0.1:8089
    ProxyPassReverse /app2 http://mylocalserverdns.mydomain.com:8089/app2
</VirtualHost>

希望如果其他人正在寻找相同的选择,这是值得的。

答案 5 :(得分:0)

我认为大多数DynamicDNS服务都允许端口转发。

答案 6 :(得分:0)

询问您的ISP为什么会这样,如果您没有得到答案,请再次切换ISP。