2008-10-04 63 views
1

我目前使用我的本地Web服务器来允许用户预览一些应用程序,并允许下载我的开源库的“每晚构建”。在端口80阻塞的网络上创建舞台环境

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

尽管我知道我可以轻松地更改Apache服务器上的端口,但我想避免这种情况,除非没有其他选择。

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

我听说的另一个想法是使用我的当前webhost的mod重写来重写我的域名,但我也不想走这条路。除此之外,你知道任何实际工作的.htaccess示例吗?我试过这个:

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

但它似乎没有工作。

回答

1

我想什么是负荷消费到 型 http://myaddress.com/hello/there?a=1&b=2 ,它会转换到 http://mylocalserver.com:8080/hello/there?a=1&b=2 ,然后再返回到一个 透明的方式负荷消费。

我相信这是你要找的重定向任何URL Apache的重写规则:

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

从那时起,客户将被浏览mylocalserver.com:8080,这就是他们会在地址栏看到。如果你的意思是“再回来”,他们仍然认为他们正在浏览myaddress.com,那么你在谈论的是一个重写代理服务器。通过这个,我的意思是你不仅需要重写所有的URL,而且还要重写所有的URL,而且还要在你的HTML内容中重写所有的URL(例如,在HTML上执行正则表达式搜索/替换),解码,重写和重发所有的GET, POST,PUT数据。我曾经写过这样一个代理,让我告诉你这不是一个简单的练习,尽管这个原则看起来很简单。

我会说,只要能让重定向工作并让他们从这一点浏览mylocalserver.com:8080就会很开心。

0

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

+0

它们提供URL转发,对吧?他们将http://www.xyz.com转发给http://www.abc.com:8080/,但似乎并不支持其他情况,如http://www.xyz.com/app1/abc.py for实例。另外,如果por 8080在客户身上受到阻碍,那么你运气不好,对吧? – kolrie 2008-10-04 22:03:31

0

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

+0

不幸的是,这不是一个替代方案。我住在巴西,有两个宽带提供商覆盖我的地区:我以前使用的是一个非常昂贵的,2Mb下行链路和150kbps上行链路。 这个新的有6Mb下来600kbps了,我现在不能破坏合同:( – kolrie 2008-10-04 22:01:27

1

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

让您的本地路由器从新端口(比如说8080)到端口80的“端口转发”流量。让您的一切保持一致。

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

,因为它们不是真正的ISP应该做的伎俩

不过看看Rolf的建议,认真......。

感谢

1

如果你不能让你的ISP开放80端口适合你,你不能切换的ISP,然后使用htacccess重定向指令:

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

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

2

“并以透明的方式返回给客户”......将由NAT照顾,以便不应该成为问题。

要处理从一个字符串到另一个字符串的请求转换,那么这是一个问题,因为您需要在请求转换到服务器之前转换请求。考虑某种形式的URL转发服务的

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

您也可以设置一个提供商的服务器上一个单独的网站,并将它转发请求到服务器上的特定地址/联系。

希望这会有所帮助!

+0

NAT(我猜你的意思是在他的家庭路由器)只影响TCP/IP中的IP,它不会穿透HTTP层并更改端口回到:80或URL返回到myaddress.com。NAT不知道转发,它只看到传入的TCP:8080流量。“透明地返回”需要一个自定义的HTTP代理 – joelhardi 2008-10-04 23:49:48

1

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

这里就是我所做的:

我雇了一个便宜的VPS服务器 - VPSLink - 并选择其最廉价的计划:64MB RAM,2GB HD和1Gb月流量。终生享受10%的折扣后,每个月只需7.16美元,这项工作相当实惠,而且您可以获得沙箱VPS服务器作为奖励。托管似乎非常好 - 没有问题。如果你想给它一个镜头,你可以从它的网站注册,上面指出或通过推荐代码。互联网上有一大堆,你只需要搜索。此外,如果您愿意,我可以轻松为您创建一个,只需在此答案中留下评论即可:您可以享受10%的折扣,而且我可以免费享受一个月的优惠。我不会直接在这里发表,因为看起来这是这篇文章背后的意图 - 事实并非如此。

该帐户是非托管的,但它提供了根访问权限。然后我配置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> 

希望这是值得,如果有人在寻找同样的选择。