Это то, что я настроил на AWS в двух словах: у меня есть ec2 (сервер Windows), назовем его моим WebAppInstance, в котором размещается веб-приложение на основе .Net.
Затем у меня есть другой экземпляр ec2 (сервер Windows), у которого есть другой экземпляр того же веб-приложения, назовем его WebAppInstanceStaging.
Теперь, чтобы добиться канареечного развертывания, я создал еще один ec2 (ubuntu) для размещения nginx, чтобы перенаправить запрос либо в WebAppInstance, либо в WebAppInstanceStaging на основе заголовка запроса.
Я поставил свойnginx за elb для использования ssl-сертификата, который есть у меня в AWS Certificate Manager (ACM), поскольку его нельзя напрямую использовать с ec2.Затем я создал набор записей Route 53 в домене, зарегистрированном в AWS (* .mydomain.com).
В Route 53 я создал набор записей как myapp.mydomain.com.Теперь, когда я получаю доступ к http://myapp.mydomain.com, я могу получить к нему доступ, но когда я пытаюсь получить доступ к http s : //myapp.mydomain.com, я вижу ошибку, говорящую, что этот сайт не может бытьдостиг (ERR_CONNECTION_REFUSED).Ниже приведена конфигурация моего nginx:
upstream staging {
server myappstaging.somedomain.com:443;
}
upstream prod {
server myapp.somedomain.com:443;
}
# map to different upstream backends based on header
map $http_x_server_select $pool {
default "prod";
staging "staging";
}
server {
listen 80;
server_name <publicIPOfMyNginxEC2> <myapp.mydomain.com>;
location / {
proxy_pass https://$pool;
#standard proxy settings
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
}
}
Более одного дня я пытался это выяснить.Чего мне не хватает?