简而言之,这就是我在AWS上的设置:
我有一个ec2(windows服务器),让我们称之为我的WebAppInstance,它承载一个。Net的web api应用程序。
然后我有另一个ec2实例(windows server),它有同一个web应用的另一个实例,我们称之为WebAppInstanceStaging。
现在,为了实现canary部署,我创建了另一个ec2(ubuntu)来托管nginx,根据请求头将请求重定向到WebAppInstance或WebAppInstanceStaging。
我将我的nginx放在elb后面,以利用AWS证书管理器(ACM)中的ssl证书,因为它不能直接与ec2一起使用。然后我在AWS(*.mydomain.com)注册的域中创建了一个Route 53记录集。
在53号公路上,我创建了一个名为myapp的记录集。我的域名。通用域名格式。
现在当我进入
http://myapp.mydomain.com
我可以访问它,但当我尝试访问http时
s
://myapp。我的域名。com我看到一个错误,说这个网站无法访问(错误连接被拒绝)。
以下是my 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;
}
}
我花了一天多的时间想弄明白。我错过了什么?