代码之家  ›  专栏  ›  技术社区  ›  tavier

如何让ec2上的nginx使用https

  •  0
  • tavier  · 技术社区  · 7 年前

    简而言之,这就是我在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;
     }
    }
    

    我花了一天多的时间想弄明白。我错过了什么?

    0 回复  |  直到 7 年前