$ 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
Если все, что необходимо сделать здесь, является запросами перенаправления на внешнем порте 80 к внутренней работе программы порта 8880, можно использовать iptables
перенаправление портов для этого:
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j REDIRECT --to 127.0.0.1:8880
Существует несколько точек для понимания здесь:
Я предполагаю, что Вы работаете на своего рода VPS, таким образом, eth0
вероятно, не правильное имя интерфейса. Необходимо будет заменить это раз так.
Кстати, если Вы находитесь на общем хостинге, или Ваш VPS не позволяет iptables
, пропустите к следующей опции.
Как записано выше, правило предполагает конфигурирование этой внутренней программы для слушания только в интерфейсе localhost, 127.0.0.1
. Это получает Вас "скрывающееся" поведение, которое Вы попросили.
Ваши существующие ранее правила брандмауэра могут вмешаться в это правило, как оно в настоящее время пишется. Нет никакой замены того, чтобы на самом деле понять Ваш ток iptables
правила прежде, чем изменить их, но если это не работает, можно вслепую попытаться добавить другое правило как это:
# iptables -A FORWARD -p tcp -i eth0 --dport 80 -j ACCEPT
Такая вещь была бы необходима если Ваше значение по умолчанию FORWARD
правило цепочки DENY
.
Необходимо удостовериться, что эти правила подходят на начальной загрузке.
Если Вы осторожны, можно отредактировать /etc/sysconfig/iptables
на CentOS для выполнения этого. Этот файл использует синтаксис, подобный — но не точно как — iptables
язык командной строки. Необходимо, вероятно, протестировать это на локальном VM для сокращения возможностей, что Вы случайно заблокируете себя из своего общедоступного сервера.
Было бы более безопасно вставить команды /etc/rc.local
, но остерегайтесь этого, если Вы перезапускаете iptables
сервис (например, service iptables reload
) Ваши пользовательские правила будут удалены, если они не будут в /etc/sysconfig/iptables
.
Если Вы прочитали все это и задаетесь вопросом, почему я сделал это Опцией 1, когда Опция 2 ниже более проста, случается так, что это намного более эффективно. Перенаправление портов является в основном "бесплатным" с точки зрения ресурсов, после того как Вы настроили его.
Другой способ пойти состоит в том, чтобы использовать своего рода Прокси 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, и если Ваш уровень трафика достаточно высок, это могло бы стать связанным вводом-выводом. Если Ваш сервер не будет особенно занят, тем не менее, то Вы, вероятно, даже не заметите, что он работает.
Это было бы сделано в Вашем httpd.conf файле как виртуальный хост. Это посмотрело бы что-то как:
<VirtualHost thisdomain.com:8880>
DocumentRoot /www/docs/svn/myapp
ServerName thisdomain.com
</VirtualHost
Удостоверьтесь, что апач является lisening для правильного порта. Найдите, где, говорит listen 80
и включайте listen 8880