提问人:hitaton 提问时间:7/16/2023 最后编辑:hitaton 更新时间:7/17/2023 访问量:487
如何在具有 ELB 和 ACM 的 EC2 实例上使用 HTTPS 设置 Nginx
How to set up Nginx with HTTPS on EC2 instance with ELB and ACM
问:
我设置了一个 EC2 实例,并在该实例上安装了一个使用 Gunicorn 和 Nginx 作为反向代理运行的 flask API。我想使用 https 协议运行它,所以我通过 OVH 购买了一个域名,并通过 AWS Certificate Manager 询问了证书,然后对其进行了验证。因此,我设置了一个 Elastic Load Balancer 以便能够使用此新证书。但是,我不知道如何修改我的 Nginx 配置文件。
现在是这个:
server {
listen 443 ssl;
server_name <my domain name>;
location / {
proxy_pass http://unix:<path to the gunicorn socket>;
}
}
但是,使用此配置,我无法启动 Nginx,因为没有指定 SSL 证书。但如您所知,使用 AWS Certificate Manager 时,无法下载任何证书,这就是我设置 ELB 的原因。
那么我该如何解决我的问题呢?
编辑
我将我的 Nginx 配置文件更改为:
server {
listen 80;
server_name <my domain name>;
location / {
proxy_pass http://unix:<path to the gunicorn socket>;
# Configurations supplémentaires
}
}
我还在 EC2 实例的端口 80 上添加了进入者规则。
但是,正如您所看到的,实例的运行状况导致不正常,我不知道为什么。此外,随着ELB的添加,我不知道是否应该将该行保留在Nginx配置文件中,或者是否应该将其更改为server_name <my domain name>
server_name <public IP of EC2 instance>
答:
首先,创建一个应用程序负载均衡器 (ALB)。然后在端口 80 上创建一个 HTTP 侦听器,并添加默认规则以将流量重定向到端口 443 上的 HTTPS。在端口 443 上创建额外的 HTTPS 侦听器。设置默认操作以将所有流量转发到目标组。将为您的域创建的 ACM 证书指定为默认 SSL 证书。在端口 80 上创建目标组并对其进行配置。将您的实例添加到目标组,并将您的应用程序设置为侦听端口 80。
评论
healthcheck failed 404
/health
200
server_name localhost;
/health
@app.route('/health') def health_check(): return '', 200
server_name localhost;
/health
评论