如何在自定义域上使用gunicorn通过nginx为flask应用程序提供服务?

如何在自定义域上使用gunicorn通过nginx为flask应用程序提供服务?,nginx,dns,Nginx,Dns,我正在尝试使用以下说明通过gunicorn在nginx上运行flask应用程序: 根据那个教程,我有两条A记录——一条空白记录和一条指向ip地址的域名上的www记录 我有一个flask应用程序,当我用gunicorn运行它时——绑定0.0.0.0:5000 wsgi:app例如,我可以在:5000上看到它 现在,当我尝试将gunicorn设置为我自己的自定义域上的服务时,问题来了 这是my/etc/systemd/system/myproject.service: [Unit] Descript

我正在尝试使用以下说明通过gunicorn在nginx上运行flask应用程序:

根据那个教程,我有两条A记录——一条空白记录和一条指向ip地址的域名上的www记录

我有一个flask应用程序,当我用gunicorn运行它时——绑定0.0.0.0:5000 wsgi:app例如,我可以在:5000上看到它

现在,当我尝试将gunicorn设置为我自己的自定义域上的服务时,问题来了

这是my/etc/systemd/system/myproject.service:

[Unit]
Description=Gunicorn instance to serve myproject
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/srv/myproject
Environment="PATH=/myproject/myprojectenv/bin"
ExecStart=/srv/myproject/myprojectenv/bin/gunicorn --workers 3 --bind unix:myproject.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target
我用sudo systemctl start myproject启动它

server {
    listen 80;
    server_name sweatt.app www.sweatt.app;

    location / {
        include proxy_params;
        proxy_pass http://unix:/srv/myproject/myproject.sock;
    }
}
然后在
/etc/nginx/sites available/myproject

server {
    listen 80;
    server_name sweatt.app www.sweatt.app;

    location / {
        include proxy_params;
        proxy_pass http://unix:/srv/myproject/myproject.sock;
    }
}
这对我来说是个棘手的问题,因为当我将sweatt.app切换到我的ip时,ip成功地为flask应用服务。但是,当我使用实际的域-sweatt.app和www.sweatt.app时,它提供:

当我尝试旧的ip时,它实际上给出了“欢迎使用nginx”登录页,好像该ip是允许的,但它只是没有通过gunicorn为flask应用程序提供服务

所以我有几个问题

  • 为什么这不起作用
  • 我如何让它工作
  • 那些A唱片是怎么回事?为什么那个教程会告诉我制作一个记录,而不是像我通常做的那样制作一个CNAME和alias记录?这是现在为自定义域提供服务的首选方式吗
  • 我的nginx站点可用配置文件中的第三行应该是什么样子?这就是我最终服务的领域吗?或者DNS重定向到的ip
    在/etc/nginx/conf.d/处创建一个包含以下内容的.conf文件

    server {
        listen 80;
        server_name www.yourdomain.com;
    
        access_log /..../access.log;
        error_log /..../error.log;
    
        location / {
            proxy_pass         http://127.0.0.1:5000/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
    

    你在说什么?你是说我应该用这个站点可用文件来代替吗?这个文件代替了/etc/nginx/sites可用吗?我也保留这个吗?我刚刚在/etc/nginx/conf.d/文件夹中创建了一个.conf文件。我不记得为什么了,但使用可用的网站对我不起作用。修改.conf文件后,必须使用/etc/init.d/nginx reload重新加载更改