Перенаправьте порт HTTP по умолчанию к приложению

$ echo 0.4970436865354813 | awk -v CONVFMT=%.17g '{gsub($1, $1*1.1)}; {print}'
0.54674805518902947

Или скорее здесь:

$ echo 0.4970436865354813 | awk '{printf "%.17g\n", $1*1.1}'
0.54674805518902947

является, вероятно, лучшим, можно достигнуть. Использовать bc вместо этого для произвольной точности.

$ echo '0.4970436865354813 * 1.1' | bc -l
.54674805518902943
2
20.06.2016, 05:02
2 ответа

Опция 1: перенаправление портов NAT

Если все, что необходимо сделать здесь, является запросами перенаправления на внешнем порте 80 к внутренней работе программы порта 8880, можно использовать iptables перенаправление портов для этого:

# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to 127.0.0.1:8880

Существует несколько точек для понимания здесь:

  1. Я предполагаю, что Вы работаете на своего рода VPS, таким образом, eth0 вероятно, не правильное имя интерфейса. Необходимо будет заменить это раз так.

    Кстати, если Вы находитесь на общем хостинге, или Ваш VPS не позволяет iptables, пропустите к следующей опции.

  2. Как записано выше, правило предполагает конфигурирование этой внутренней программы для слушания только в интерфейсе localhost, 127.0.0.1. Это получает Вас "скрывающееся" поведение, которое Вы попросили.

  3. Ваши существующие ранее правила брандмауэра могут вмешаться в это правило, как оно в настоящее время пишется. Нет никакой замены того, чтобы на самом деле понять Ваш ток iptables правила прежде, чем изменить их, но если это не работает, можно вслепую попытаться добавить другое правило как это:

    # iptables -A FORWARD -p tcp -i eth0 --dport 80 -j ACCEPT
    

    Такая вещь была бы необходима если Ваше значение по умолчанию FORWARD правило цепочки DENY.

  4. Необходимо удостовериться, что эти правила подходят на начальной загрузке.

    Если Вы осторожны, можно отредактировать /etc/sysconfig/iptables на CentOS для выполнения этого. Этот файл использует синтаксис, подобный — но не точно как — iptables язык командной строки. Необходимо, вероятно, протестировать это на локальном VM для сокращения возможностей, что Вы случайно заблокируете себя из своего общедоступного сервера.

    Было бы более безопасно вставить команды /etc/rc.local, но остерегайтесь этого, если Вы перезапускаете iptables сервис (например, service iptables reload) Ваши пользовательские правила будут удалены, если они не будут в /etc/sysconfig/iptables.

Если Вы прочитали все это и задаетесь вопросом, почему я сделал это Опцией 1, когда Опция 2 ниже более проста, случается так, что это намного более эффективно. Перенаправление портов является в основном "бесплатным" с точки зрения ресурсов, после того как Вы настроили его.

Опция 2: прокси HTTP

Другой способ пойти состоит в том, чтобы использовать своего рода Прокси HTTP. Я использовал Tinyproxy для этого вида вещи. Это более гибко, чем перенаправление портов NAT и не требует, чтобы Вы унавозили с брандмауэром ОС.

Это упаковывается для CentOS в EPEL, так, чтобы, после того как Вы включили репозиторий EPEL, Вы просто сказали yum install tinyproxy.

Внесите эти изменения в запасе /etc/tinyproxy/tinyproxy.conf файл:

Port 80
Upstream localhost:8880

Кроме того, прокомментируйте Allow строка, таким образом, Tinyproxy примет соединения от внешнего дюйм/с:

# Allow 127.0.0.1

Необходимо удостовериться, что Apache не работает (service httpd stop) когда Вы пытаетесь запустить это (service tinyproxy start), так как это будет занимать порт 80.

Документация для Tinyproxy является просто краткой ссылкой, таким образом, я не уверен ли это использование Upstream взлом, лучше замененный при помощи обратных функций Tinyproxy прокси. Это работает на меня, тем не менее, и это вносит меньше изменений в конфигурационном файле, таким образом, это - то, как я делаю это.

Если Вы задаетесь вопросом, почему я только не использовал Apache для этого от запуска, это просто, что это более сложно и берет больше ресурсов. Apache действительно имеет функции проксирования. Если Вам не нужна полная мощность Apache, тем не менее, я не вижу оснований, чтобы пойти тем путем по Tinyproxy.

В отличие от перенаправления портов NAT, действительно требуются некоторые системные ресурсы для выполнения Tinyproxy. Требуется некоторая RAM, и если Ваш уровень трафика достаточно высок, это могло бы стать связанным вводом-выводом. Если Ваш сервер не будет особенно занят, тем не менее, то Вы, вероятно, даже не заметите, что он работает.

3
27.01.2020, 21:57

Это было бы сделано в Вашем httpd.conf файле как виртуальный хост. Это посмотрело бы что-то как:

<VirtualHost thisdomain.com:8880>
DocumentRoot /www/docs/svn/myapp
ServerName thisdomain.com
</VirtualHost

Удостоверьтесь, что апач является lisening для правильного порта. Найдите, где, говорит listen 80 и включайте listen 8880

2
27.01.2020, 21:57
  • 1
    Привет Jeight, у меня есть это на httpd.conf: ServerRoot "/data/csvn" Включает "data/conf/csvn_modules_httpd.conf", Включают "data/conf/csvn_main_httpd.conf", Включают "data/conf/csvn_logging.conf", Включают "data/conf/csvn_default_dirs_httpd.conf", Включают "data/conf/svn_viewvc_httpd.conf", Включают "data/conf/csvn_misc_httpd.conf", Когда u говорят, что DocumentRoot я должен указать на? –  Marco Herrarte 06.11.2013, 23:50
  • 2
    я не уверен, что понимаю то, что Вы спрашиваете. DocumentRoot является путем, в котором Вы хотите, чтобы Ваш домен запустился. Таким образом, когда люди переходят к thisdomain.com, это запускает их использующий тот путь в качестве корня. –  Jeight 07.11.2013, 02:05
  • 3
    я не думаю, что это делает то, что хочет OP. OP имеет сервис, уже перечисляющий на порте 8880, и хочет, чтобы он появился на порте 80. Возможно, Вы могли переписать свой ответ, чтобы показать, как использовать Apache в качестве обратного прокси для выполнения этого? –  Warren Young 07.11.2013, 03:55

Теги

Похожие вопросы