1

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

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

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

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

我听说的另一个想法是使用我当前的虚拟主机中的 mod rewrite 来重写我的域,但我也不想走这条路。除此之外,您知道任何实际有效的 .htaccess 示例吗?我试过这个:

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

但这似乎不起作用。

4

7 回答 7

2

“并以透明的方式再次返回给客户”....将由 NAT 处理,因此这应该不是问题。

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

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

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

希望这可以帮助!

于 2008-10-04T22:26:57.110 回答
1

由于端口 80 被阻塞,通过动态服务路由将无济于事,除非客户端在域中指定新端口。

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

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

这应该够了吧

仍然考虑 Rolf 的建议,因为它们不是真正的 ISP,.... 说真的。

谢谢

于 2008-10-04T22:03:46.750 回答
1

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

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

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

于 2008-10-04T22:06:38.103 回答
1

我想让客户输入 http://myaddress.com/hello/there?a=1&b=2 并将其翻译为 http://mylocalserver.com:8080/hello/there?a=1&b =2 并以透明的方式再次返回给客户。

我相信这是您正在寻找重定向任何 URL 的 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起浏览,那就太高兴了。

于 2008-10-04T23:29:49.497 回答
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>

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

于 2008-10-06T01:22:21.467 回答
0

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

于 2008-10-04T21:56:24.520 回答
0

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

于 2008-10-04T21:56:58.247 回答