Вот функция расширения для разделения с разделителем строк:
public static string[] Split(this string value, string seperator)
{
return value.Split(new string[] { seperator }, StringSplitOptions.None);
}
Пример использования:
string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
При использовании балансировщика нагрузки в AWS общим вариантом использования является установка SSL-сертификата на балансировщик нагрузки. Это обычно называется разгрузкой SSL или балансировкой нагрузки уровня 7. Трафик с балансировщика нагрузки на экземпляр EC2 не зашифрован и обычно превышает порт 80 (иногда 8080) (HTTP). Трафик с клиента на ваш балансировщик нагрузки определяется создателями, которые вы создали.
Балансировка нагрузки уровня 4 использует TCP для связи с вашим экземпляром EC2 и вы устанавливаете SSL-сертификат на свой веб-сервер. Затем ваш веб-сервер знает, к какому порту подключается клиент, и следующее НЕ ПРИМЕНЯЕТ.
Ваш код, на котором работает ваш веб-сайт, должен проверить, подключен ли клиент к балансировщику нагрузки, используя HTTPS. Если это правда, не перенаправляйте клиента. Если клиент подключен к балансировщику нагрузки, используя HTTP, затем перенаправляет клиент.
Следующий код PHP показывает, как читать заголовки Load Balancer, которые отправляются в ваш экземпляр EC2, чтобы определить, подключен ли клиент к HTTPS , Если вы не используете такой язык, как PHP или Nodes.js, вы также можете создавать конфигурации Apache, которые знают, как читать правильные заголовки (пример внизу).
function require_ssl()
{
global $config_require_ssl;
if ($config_require_ssl == FALSE)
{
return;
}
if (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']))
{
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
{
$_SERVER['HTTPS']='on';
}
}
if(empty($_SERVER['HTTPS']) || $_SERVER["HTTPS"] != "on")
{
header("Location: https://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
exit();
}
}
Это код для Apache:
<VirtualHost *:80>
RequestHeader set X-Forwarded-Proto "http"
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
…
</VirtualHost>
Вы можете отключить трафик SSL на балансировщике нагрузки приложений (ALB) и связь между ALB, и вы можете настроить перенаправление с http на https с помощью конфигурации веб-сервера EC2.
Вы правы, что если нет запущенных серверов, перенаправление не будет работать. Infact ответ будет другой ошибкой, когда ресурс недоступен. Если вы настраиваете автомасштабирование и балансировку нагрузки с несколькими экземплярами, для большинства случаев по крайней мере один здоровый экземпляр должен иметь возможность выполнять перенаправление.
Вам нужно настроить приложение, которое у вас запущено в Elastic Beanstalk, для настройки перенаправления Http на Https.
Затем при настройке Load Balancer через Elastic Beanstalk создайте 2 прослушивателя, один для порт 80 и один для 433, которые передаются вперед.
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-alb.html