December 10, 2019, 03:34:55 am

News:

Have you visited the Allwinner Chipset wiki? - http://linux-sunxi.org/


Редирект в Apache

Started by luminofor, April 22, 2014, 07:10:19 am

Previous topic - Next topic

luminofor

Прошу прощения за возможно нубский вопрос.
Читал статью, навеяло этим обсуждением.
В статье упоминается вот такая строка конфига Apache
SCGIMount /RPC2 127.0.0.1:5000
Это что получается, теоритически можно перенаправить 9091 порт transmission-daemon или скажем 10000 порт Webmin на 80-й порт сервера? И таким образом получить доступ к любому порту своего сервера из мира

luminofor

April 22, 2014, 01:04:25 pm #1 Last Edit: April 22, 2014, 05:25:28 pm by luminofor
Про маршрутизатор я в курсе, у меня на работе (по некоторым наблюдениям) стоит squid и в мир открыто ограниченое количество портов. Поэтому не получается обратиться напрямую к нужному порту. Приходится городить либо openvpn либо pptp. Я уже почитал по данному вопросу инфу про апача. Можно перенаправить с помощью локального прокси, но надо вникать в маны

Отправлено с моего Hongmi через Tapatalk


luminofor

Я может неправилно сформулировал вопрос изначально, под перенаправлением я имею ввиду обращение вида http://my_host.com/transmission будет перенаправлено на на http://my_host.com:9091 средствами апача, и для внешнего браузера будет казаться, что он обращается к 80-му порту
Но в свете последней найденной мной информации, думаю, что перенаправление будет на http://127.0.0.1:9091

nostromo

Я с Web-серверами знаком не то чтобы очень, но насколько я понял, речь идет об обратном прокси (reverse proxy). Так что да, эта функциональность есть и в Apache, и в NGINX, и в другом нормальном Web-сервере.

Раджа

Заткнись и смотри аниме!

luminofor

Quote from: Раджа on April 23, 2014, 12:40:37 am
Аналогичный функционал у nginx http://nginx.org/ru/docs/http/ngx_http_proxy_module.html

Я поставил сборку от ikeeki, там уже апач стоял. Подумал: я ни в nginx не разбираюсь, ни в apache, так что какая разница с чем париться  :D

Orby_tale

Да, апач может проксировать запросы на другой порт. В настройках вхоста пропишите что-то типа такого:
<VirtualHost *:80>
        ServerName my_host.com
        ServerAlias www.my_host.com

        ProxyRequests Off
        ProxyPreserveHost On

        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        ProxyPass               /transmission    http://localhost:9091/
        ProxyPassReverse        /transmission   http://localhost:9091/
</VirtualHost>

Апач должен быть с загруженным модулем mod_proxy

luminofor

Quote from: Orby_tale on May 18, 2014, 10:43:40 am
Да, апач может проксировать запросы на другой порт. В настройках вхоста пропишите что-то типа такого:
<VirtualHost *:80>
        ServerName my_host.com
        ServerAlias www.my_host.com

        ProxyRequests Off
        ProxyPreserveHost On

        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        ProxyPass               /transmission    http://localhost:9091/
        ProxyPassReverse        /transmission   http://localhost:9091/
</VirtualHost>

Апач должен быть с загруженным модулем mod_proxy


Вернулся я к этому вопросу. Как оказалось не все так просто. Буду постить здесь результаты моих мучений.

Итак. Первым делом я попытался получить доступ к своему роутеру из мира. Напомню, что порт 80 уже занят, он перенаправлен на порт 80 кубика. Хочу, чтобы открывая страничку http://myhost.com/router открывалась страница настроек роутера, расположенная по внутреннему адресу 192.168.1.1

Для этого вдумчиво почитал Установка HTTP-сервера Apache как обратного прокси с помощью mod_proxy
Прописал примерно такую конфигурацию в апач


        ProxyRequests Off
        ProxyPreserveHost On

        <Proxy *>
          Order deny,allow
          Allow from all
        </Proxy>

        ProxyPass  /router http://192.168.1.1
        ProxyPassReverse  /router http://192.168.1.1
</VirtualHost>


Получаю такую страничку



Криво правда?

Нашел решение проблемы здесь, за что спасибо автору

Прописал такую конфигурацию


ProxyRequests Off
#ProxyPreserveHost On

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

#RewriteEngine On

<Location /router>
  ProxyPass http://192.168.1.1
  ProxyPassReverse http://192.168.1.1
  RequestHeader unset referer
</Location>


Теперь все ОК



Обратите внимание на слеш в конце адреса. Без него страничка будет такая же кривая, как на первой картинке

ЗЫ. Я так и не понял на что влияют параметры ProxyPreserveHost и RewriteEngine, поэтому пока закомментировал их

luminofor

Для трансмиссии добавил следующие строчки в конфиг


ProxyPass /transmission http://localhost:9091/transmission
ProxyPassReverse /transmission http://localhost:9091/transmission