Nginx Gunicorn套接字问题?无反应

时间:2018-10-18 08:31:22

标签: nginx webserver gunicorn amazon-lightsail

我正在尝试将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看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:0)

经过两天的努力,我找到了解决方案。

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

实例菜单>管理>网络

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

为什么他们会在UFW前面加一个防火墙呢?