Совместно используйте внешний IP с несколькими виртуальными хостами

$@ расширяется для разделения слов (тогда как $* расширяется до отдельного слова), как объяснено в bash руководство. Таким образом, когда Вы пишете

zenity --text="$@"

это расширяется до

zenity --text="$1" "$2" "$3"

Однако окружите переменные присвоения, не подвергаются разделению слова. Обратите внимание, что поле / разделение слова опущено в списке расширений для переменных присвоений в bash руководство. Это поведение согласовывается со спецификацией POSIX. Так, когда Вы пишете

text="$@"

переменная text получает все позиционные параметры как отдельное слово, эквивалентное тому, если Вы записали text="$*". Действительно, это - причина, двойные кавычки являются часто ненужными в переменных присвоениях. Оба

text=$@

и

text=$*

совершенно безопасны.

Так,

text=$@
zenity --option="$text"

расширяется "$text" к отдельному слову, которое является, почему это работает. Обратите внимание что --option="$@" просто нормальный аргумент команде zenity, и не присвоение переменной оболочки, которое является, почему разделение слова происходит здесь, но не в text=$@.

2
16.10.2013, 16:06
1 ответ

Если Вы просто хотите направить различные порты на 2.2.2.2 к различным виртуальным машинам, можно сделать это с iptables. Дополнительную информацию см. в руководстве CentOS, включая то, как сделать правила персистентными (iptables только изменяет настройки до следующей перезагрузки). К прямому входящему TCP запрашивает на порте 13080 к 10.0.0.1 на порте 80:

iptables -t nat -A PREROUTING -p tcp --dport 13080 -j DNAT --to 10.0.0.1:80

Если Вы хотите выбрать VM в зависимости от имени хоста в Запросе HTTP, Вам нужен сервер HTTP для действия как диспетчер. Можно использовать Apache, но для такой быстрой, простой задачи, Nginx популярен.

0
27.01.2020, 23:02

Теги

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