简而言之,这就是我在AWS上设置的内容: 我有一个ec2(Windows服务器),我称它为WebAppInstance,它托管一个基于.Net的Web api应用程序。
然后,我有另一个ec2实例(Windows服务器),该实例具有同一Web应用程序的另一个实例,可以称之为WebAppInstanceStaging。
现在,为了实现金丝雀部署,我创建了另一个ec2(ubuntu)来承载nginx,以根据请求标头将请求重定向到WebAppInstance或WebAppInstanceStaging。
我将Nginx放在了一个弯头后面,以利用我在AWS Certificate Manager(ACM)中拥有的ssl证书,因为它不能直接与ec2一起使用。然后,我在向AWS(* .mydomain.com)注册的域中创建了Route 53记录集。
在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;
}
}
一天多来尝试解决这个问题。我想念什么?