0

我正在尝试将 Django 项目部署到 AWS Lightsail 服务器。

我主要遵循本教程。我添加了一些 SSL 协议以提高安全性。

这个项目在我的 Ubuntu 18.04 VirtualBox 上完美运行,具有完全相同的设置和完全相同的组件,相同的 SSL 协议。但是在 Lightsail 上,它不响应浏览器请求。它会将我重定向到 https,但随后会死掉......我无法识别任何日志中的任何错误。这让我猜

/etc/systemd/system/webrock.socket:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/webrock.sock

[Install]
WantedBy=sockets.target

/etc/systemd/system/webrock.service:

[Unit]
Description=gunicorn daemon
Requires=webrock.socket
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/django/webrock
ExecStart=/home/ubuntu/django/webrock/venv/bin/gunicorn \
      --access-logfile - \
      --workers 3 \
      --bind unix:/run/webrock.sock \
      core.wsgi:application

[Install]
WantedBy=multi-user.target

/etc/nginx/sites-available/webrock:

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2 ipv6only=on;

        include snippets/signed.conf; # path to certs
        include snippets/params.conf; # cert related params


        index index.html index.htm index.nginx-debian.html;

        server_name mydomain.com www.mydomain.com; #changed this line by replacing domain name with dummy


        location = /favicon.ico {access_log off; log_not_found off;}
        location /static/ {
                root /home/ubuntu/django/webrock;
        }
        location / {
                include proxy_params;
                proxy_pass http://unix:/run/webrock.sock;
                try_files $uri $uri/ =404;
        }

}
server {
        listen 80;
        listen [::]:80;

        server_name mydomain.com www.mydomain.com; #changed this line by replacing domain name with dummy

        return 302 https://$server_name$request_uri;

}

我单独留下了 nginx 默认文件。现在每次我通过打卡服务器IP访问页面时,我都会看到nginx默认页面。当我使用域名时,我被重定向到 HTTPS,但是……什么都没有。我认为 gunicorn 和 nginx 之间存在一些中断,但我没有足够的经验来解决问题或解决问题。

正如我上面提到的,完全相同的设置在我的 VirtualBox 中的类似系统上运行完美。

我非常感谢您的建议和提示。

更新: 我禁用了 nginx 中的重定向部分并让它监听端口 80。它工作。现在我试图弄清楚如何将 HTTP2 和端口 443 引入到设置中。顺便说一句,我的 ufw 看起来像这样:

在此处输入图像描述

4

1 回答 1

1

经过两天的努力解决这个问题,这里就是解决方案。

因此,Amazon Lightsail 在实际服务器上的 UFW 前面有一个额外的防火墙。您可以通过单击访问 Lightsail 防火墙...

您的实例的菜单 > 管理 > 网络

您将看到您的实例的汇总网络,例如 IP 地址、防火墙、负载均衡器。在该防火墙中,您需要添加一个额外的端口(在我的情况下为 HTTPS)。

他们为什么要在 UFW 前面增加一个防火墙让我失望。

于 2018-10-19T16:41:22.047 回答