Создание рабочей среды в сети с заблокированным портом 80
-
05-07-2019 - |
Вопрос
В настоящее время я использую свой локальный веб-сервер, чтобы позволить клиентам просматривать некоторые приложения, а также загружать «ночные сборки» моей библиотеки с открытым исходным кодом.
Проблема в том, что я сменил интернет-провайдера, и теперь мой порт 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 позволяют переадресацию портов.
Спросите своего интернет-провайдера, почему это так, и если вы не получили ответа, снова переключите интернет-провайдера.