nginx - 如何在自定义域上使用 gunicorn 通过 nginx 提供烧瓶应用程序?
问题描述
我尝试使用以下说明通过 gunicorn 在 nginx 上运行烧瓶应用程序:https ://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu -18-04
根据该教程,我有两条 A 记录——一条空白一条,一条用于我的域上的 www,指向我的 IP 地址。
我有一个烧瓶应用程序,例如当我运行它时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;
}
}
现在这个对我来说是一个棘手的问题,因为当我将汗水.app 切换到我的 ip 时,该 ip 成功地为烧瓶应用程序提供服务。但是,当我使用实际的域——sweatt.app 和 www.sweatt.app 时,它的作用是:
当我尝试旧 ip 时,它实际上给出了“欢迎使用 nginx”登录页面,就好像该 ip 是允许的,但它只是不通过 gunicorn 为烧瓶应用程序提供服务。
所以我有几个问题。
- 为什么这不起作用
- 我如何让它工作
- 那些A记录是怎么回事?为什么该教程会告诉我制作 A 记录而不是像我通常那样制作 CNAME 和别名记录?这是现在为自定义域提供服务的首选方式吗?
- 我的 nginx 站点可用 conf 文件中的第 3 行应该是什么样的?这是我最终服务的域吗?还是 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;
}
}
推荐阅读
- sql - 对齐两列中的内容 (SSRS)
- javascript - 如何从 ul 中搜索文本并实时显示结果?
- xamarin.forms - Xamarin.Forms 3.3 WKWebView 注入 javascript
- r - R group_by 并在最近的样本中总结
- python - 使用 sklearn 计算准确性时出错
- javascript - 为什么我的 html、css 和 javascript 内容在我的手机(不同平台)上向右移动?
- haskell - Haskell - 解释 `tell` 的工作原理
- ios - Cocoapods FMDB/SQLCipher 2.7.5 无法解密
- redux - 使用 Redux Saga 对 API 调用进行重复数据删除
- proxy - 在 centos7 中使用 devstack 安装 OpenStack 时出错