我目前有一个 NodeJS (Koa.js) / Angular4+ 应用程序位于运行 Linux 的 AWS 实例上,我需要配置它才能使用 SSL。我在网上按照一些教程操作,生成了 SSL 证书并尝试让它工作,但到目前为止还没有成功。
让我向你介绍一下我目前所做的事情:
我已经生成了 SSL 证书,它位于实例上的 /home/ubuntu 目录中名为 ssl-bundle.crt 的文件中。密钥也位于同一目录中。
我已在 Nginx 上为应用程序配置了服务器块,如下所示(/etc/nginx/sites-available/dashboard.conf):
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
ssl_certificate /home/ubuntu/ssl-bundle.crt;
ssl_certificate_key /home/ubuntu/dashboard.d*****d.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/d*****d.access.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://localhost:4000;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Node 应用程序在端口 4000 上运行,因此当有人访问该 URL 时,我会向该地址发送一个 proxy_pass。当我不使用 SSL 时,应用程序在访问该 URL 时运行良好,但当我尝试使用上述服务器块代码尝试访问 URL 时会导致超时。有人能帮我吗,或者看看我的配置有什么问题吗?
谢谢
答案1
您必须在节点服务器配置文件中列出 SSL 证书和密钥文件路径。您可以在 index.js 或 app.js 文件中列出它们。
这个问题已经在堆栈溢出更早。
答案2
事实证明这不是 Nginx 问题,而是 AWS 安全组的问题。我没有在设置中允许 443 作为传入端口。一旦我这样做,它就正常工作了。希望这对未来使用 AWS 的任何人有所帮助。