2008-10-04 197 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> 

希望這是值得,如果有人在尋找同樣的選擇。