Создание рабочей среды в сети с заблокированным портом 80

StackOverflow https://stackoverflow.com/questions/171044

Вопрос

В настоящее время я использую свой локальный веб-сервер, чтобы позволить клиентам просматривать некоторые приложения, а также загружать «ночные сборки» моей библиотеки с открытым исходным кодом.

Проблема в том, что я сменил интернет-провайдера, и теперь мой порт 80 заблокирован.

Хотя я знаю, что могу легко изменить порт на сервере Apache, я бы хотел избежать этого, если нет альтернативы.

Знаете ли вы какую-либо стороннюю службу (бесплатную или платную), которая бы перенаправляла мой веб-сайт, делая его прозрачным для тех, кто получает к нему доступ?

Еще одна идея, о которой я слышал, заключалась в использовании перезаписи модов с моего текущего веб-хоста для перезаписи на мой домен, но я бы также предпочел не идти по этому пути.Кроме того, знаете ли вы какие-нибудь примеры .htaccess, которые действительно работают?Я пробовал это:

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

Но, похоже, это не работает.

Это было полезно?

Решение

  

Я бы хотел, чтобы клиент   тип    http://myaddress.com/hello/there?a=1&b=2   и это переводится    http://mylocalserver.com:8080/hello/there?a=1& б = 2   и снова к клиенту на   прозрачный способ.

Я считаю, что это Apache RewriteRule, который вы ищете для перенаправления любого URL:

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

С этого момента клиент будет просматривать mylocalserver.com:8080 , и именно это он увидит в адресной строке. Если то, что вы подразумеваете под "и вернитесь снова" в том, что они все еще думают, что просматривают myaddress.com , тогда вы говорите о переписывающем прокси-сервере.

Я имею в виду, что вам придется переписывать все URL-адреса не только в заголовках HTTP, но и в содержимом HTML (т. е. выполнять поиск / замену регулярных выражений в HTML), а также декодировать, переписывать и повторно отправлять все GET, POST , PUT данные тоже. Однажды я написал такой прокси, и позвольте мне сказать вам, что это не тривиальное упражнение, хотя принцип может показаться простым.

Я бы сказал, просто будьте счастливы, если вы сможете заставить работать редирект и позволить им просматривать mylocalserver.com:8080 с этого момента.

Другие советы

" и снова к клиенту прозрачным способом " .... об этом позаботится NAT, так что это не должно быть проблемой.

Для обработки запроса на перевод из одной строки в другую, это проблема, поскольку вам нужно преобразовать запрос до того, как он попадет на сервер. Загляните в какой-нибудь сервис переадресации URL

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

Также вы можете настроить отдельный сайт на сервере провайдера и перенаправлять запросы на определенный адрес / ссылку на вашем сервере.

Надеюсь, это поможет!

Если порт 80 заблокирован, маршрутизация через динамическую службу не поможет, если только клиент не укажет новый порт в домене.

Направьте трафик вашего локального маршрутизатора с нового порта (скажем, 8080) на порт 80.Оставьте все по-прежнему на своей стороне.

Создайте учетную запись на DynDNS.org и настройте динамическую службу.Затем попросите вашего клиента сделать http://mydomain.com:8080

Это должно делать свое дело

Тем не менее рассмотрите предложение Рольфа, поскольку они не являются настоящими интернет-провайдерами... серьезно.

Спасибо

Если вы не можете заставить своего интернет-провайдера открыть для вас порт 80 и не можете переключить интернет-провайдеров, используйте директиву перенаправления htacccess:

Перенаправление 301 / http://yourserver.com:8000/

Пользователи могут заметить перенаправление, но им, вероятно, будет все равно.

Что ж, хотя я и оценил ответы, конечный результат меня не вполне удовлетворил.Я хотел, чтобы изменения в моем интернет-провайдере были прозрачными для моих клиентов, и я думаю, что мне удалось заставить это работать.

Вот что я сделал:

Я нанял дешевый VPS-сервер - ВПССсылка - и выбрал самый дешевый тариф:64 Мб ОЗУ, 2 Гб HD и 1 Гб ежемесячного трафика.После пожизненной скидки 10% это было всего 7,16 долларов США в месяц, что вполне доступно для этой работы, и в качестве бонуса вы получаете VPS-сервер для песочницы.Хостинг пока вроде хороший - проблем нет.Если вы хотите попробовать, вы можете зарегистрироваться на сайте, указанном выше, или с помощью реферального кода.В интернете их много, нужно только поискать.Кроме того, я могу легко создать его для вас, если хотите, просто оставьте комментарий к этому ответу:вы получите скидку 10%, а я месяц бесплатно.Я не буду публиковать это прямо здесь, потому что может показаться, что именно это и было целью этой публикации, но это не так.

Эта учетная запись неуправляемая, но она обеспечивает root-доступ.Затем я настроил Apache для работы в качестве прокси-сервера для моих запросов через порт 80, прозрачно пересылая их на мой локальный веб-сайт через порт 8081.

Ниже приведены некоторые фрагменты файлов конфигурации httpd.conf моего Apache.

Конфигурация 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, поэтому я могу делать оттуда все, что захочу.

На моем локальном сервере я сделал то же самое, чтобы распространить обработчик поддоменов.Например, у меня есть два серверных приложения Java, которые локально работают на портах 8088 и 8089.Все, что мне нужно было сделать, это еще один прокси-форвард, теперь уже внутри компании.

Конфигурация локального сервера:

<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>

Надеюсь, это того стоит, если кто-то еще ищет такую ​​​​же альтернативу.

Я думаю, что большинство сервисов DynamicDNS позволяют переадресацию портов.

Спросите своего интернет-провайдера, почему это так, и если вы не получили ответа, снова переключите интернет-провайдера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top