我正在尝试使用以下说明通过gunicorn在nginx上运行flask应用程序:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04
根据该教程,我有两个A记录-一个空白记录和一个用于域名的www指向我的IP地址。
我有一个flask应用程序,例如,当我使用gunicorn --bind 0.0.0.0:5000 wsgi:app
运行它时,我可以在:5000上看到它。
现在,当我尝试在自己的自定义域中使用gunicorn将其设置为服务时,就会出现问题。
这是我的/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
然后在/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应用提供服务。
所以我有几个问题。
答案 0 :(得分:1)
在/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;
}
}