为了账号安全,请及时绑定邮箱和手机立即绑定

如何在数字海洋上使用 https 制作 Flask 应用程序

如何在数字海洋上使用 https 制作 Flask 应用程序

LEATH 2022-06-02 14:36:29
我有一个烧瓶应用程序在数字海洋水滴的 8000 端口上运行。我需要在这台服务器上实现 https,我遵循了这个教程https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04这样,我的 'mydomain.com' 有 https,但 'mydomain.com:8000' 没有。我试着把    listen 8000 ssl;    listen [::]:8000 ssl;    server_name funders-api.ninja www.funders-api.ninja;    ssl_certificate /etc/letsencrypt/live/funders-api.ninja/fullchain.pem; # managed by Certbot    ssl_certificate_key /etc/letsencrypt/live/funders-api.ninja/privkey.pem; # managed by Certbot    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";} 在我的 nginx congif 上,但仍然无法正常工作。使用上面的代码,我无法启动我的烧瓶应用程序,因为它已经被 nginx 进程使用了端口 8000
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

只有 1 个应用程序/服务可能正在侦听 1 个具体端口。


如果您的烧瓶应用程序已经在侦听端口 8000,则 nginx 不能。


正常的 https 连接通过端口 443 进入。


我会将配置更改为:


server {

    listen 443 ssl;

    listen [::]:443 ssl;

    server_name funders-api.ninja www.funders-api.ninja;

    ssl_certificate /etc/letsencrypt/live/funders-api.ninja/fullchain.pem; # managed by Certbot

    ssl_certificate_key /etc/letsencrypt/live/funders-api.ninja/privkey.pem; # managed by Certbot

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

    location / {

        include proxy_params;

        proxy_pass http://127.0.0.1:8000;

    }


}

像这样,安全连接通过端口 443 进入,由 nginx 使用证书进行验证


    ssl_certificate /etc/letsencrypt/live/funders-api.ninja/fullchain.pem; # managed by Certbot

    ssl_certificate_key /etc/letsencrypt/live/funders-api.ninja/privkey.pem; # managed by Certbot

然后你对你的烧瓶应用程序正在监听的端口进行代理(一旦连接得到保护)。


这是我如何做的一个例子。如果 nginx 是处理与证书的连接的人,则 nginx 需要侦听您建立连接的端口,然后将连接代理到您的烧瓶应用程序。


如果您的请求是直接向烧瓶应用程序发出的,则 nginx 不会做任何事情,因为连接还没有通过它。


如果您有任何问题,请不要怀疑问我。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 72 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信