我正在尝试将Django项目部署到AWS Lightsail服务器。
我主要关注this tutorial。我添加了一些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看起来像这样:
答案 0 :(得分:0)
经过两天的努力,我找到了解决方案。
因此,Amazon Lightsail在实际服务器的UFW前面有一个额外的防火墙。 您可以通过单击...来访问Lightsail防火墙。
实例菜单>管理>网络
您将看到您的实例的汇总网络,例如IP地址,防火墙,负载均衡器。在该防火墙中,您需要添加其他端口(以我的情况为HTTPS)。
为什么他们会在UFW前面加一个防火墙呢?