С bash работа с подстроками:
s1="abcd"
s2="xwyz"
s1=${s1:0:2}${s2:3}${s1:3}
${s1:0:2}
-1-й фрагмент, содержащийab
(до 3-го символаc
)
${s2:3}
-4-й символ строки s2
для вставки
${s1:3}
-последний (4-й )символ строки s1
Окончательное s1
значение:
echo $s1
abzd
Или с помощью инструмента GNU awk :
gawk -v s2=$s2 -v FPAT='[a-z]' '{$3=substr(s2,4)}1' OFS="" <<< $s1
abzd
<<< $s1
-первая строка s1
считается входным содержимым
-v s2=$s2
-передача второй строки s2
в качестве переменной в скрипт awk
FPAT='[a-z]'
-шаблон регулярного выражения, определяющий значение поля([a-z]
-любой буквенный символ)
В качестве альтернативы вы также можете применить «пустой» разделитель полей FS=""
, рассматривая каждый символ как отдельное поле:
gawk -v s2=$s2 'BEGIN{ FS=OFS="" }{$3=substr(s2,4)}1' <<< $s1
abzd
Это известно как «обратный прокси ». Оба Apache2 и Nginx имеют эту функциональность, как и Varnish.
Лично и профессионально я использовал Apache2 в качестве обратного прокси-сервера. Я пробовал использовать Varnish, и у меня никогда не получалось успешной реализации, но, конечно, это не значит, что у вас это не сработает.
Что нужно помнить
Когда вы отправляете HTTP-запрос в браузере к доменному имени, вводя URL-адрес, браузер сначала ищет IP-адрес этого домена, затем открывает соединение с этим IP-адресом через порт #80 и отправляет это (вариантов масса, но для примера достаточно):
Тестовый URL-адрес:http://www.bluejeans.com/testurl
> GET /testurl HTTP/1.1
> User-Agent: curl/7.20.0 (i686-pc-linux-gnu) libcurl/7.20.0 OpenSSL/1.0.2t zlib/1.2.3 libidn/0.6.5
> Host: www.bluejeans.com
> Accept: */*
Как видите, исходный URL-адрес разделен, целевое доменное имя теперь содержится в заголовке Host:
, а оставшийся путь URL-адреса является параметром GET
. Это информация, которая достигает веб-сервера, обратного прокси-сервера, кеша или любого промежуточного программного обеспечения, которое прослушивает определенный порт IP :.
Одной этой информации достаточно, чтобы принять решение о входящем запросе, к какому веб-сайту он хочет обратиться, и он может быть правильно прокси -ред к тому серверу, который действительно обслуживает запрос (иногда называетсяorigin server
).