Python中如何在一台服务器上配置Flask和Django两个项目网站?只有一个公网IP
详细情况:
服务器:一台阿里云 ECS 主机。
域名:有两个域名,均未备案(已提交,审核太慢了。但是现在急需运行项目)。
本来只有一个 Flask 项目,配置 Nginx 后通过访问公网 ip,就能直接访问。
现在想再往服务器部署一个 Django 项目。该如何配置呢?
在网上查到的方法都是有两个域名,在 Nginx 里设置两个 Server name 和 端口号即可。但现在两个域名都未备案,无法使用。可用的只有一个公网 IP、有什么方法可以同时部署好这两个项目并访问呢 。求各位指教
Python中如何在一台服务器上配置Flask和Django两个项目网站?只有一个公网IP
IP 也可以不同端口啊
1.2.3.4:80
1.2.3.4:81
帖子回复:
这个问题很实际,一个公网IP跑多个Web项目是常见需求。核心思路就是用反向代理(比如Nginx)根据访问的域名或路径,把请求转发到对应的后端服务。Flask和Django项目各自在自己的端口上运行(比如Flask在5000,Django在8000),然后由Nginx统一对外。
下面是一个最直接的Nginx配置示例,假设你的公网IP绑定了两个域名:
flask.example.com-> 指向Flask应用 (运行在127.0.0.1:5000)django.example.com-> 指向Django应用 (运行在127.0.0.1:8000)
1. 首先,确保你的Flask和Django项目能在本地端口正常启动。
- Flask: 通常
app.run(host='0.0.0.0', port=5000) - Django:
python manage.py runserver 0.0.0.0:8000(仅用于测试,生产环境要用Gunicorn/UWSGI)
2. 关键的Nginx配置 (/etc/nginx/sites-available/your_config 或直接在 nginx.conf 的 http 块里):
server {
listen 80;
server_name flask.example.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name django.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
3. 配置完成后,检查Nginx配置并重启:
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 或 sudo service nginx restart
4. 最后,把你的域名DNS解析到这台服务器的公网IP。
如果只有一个域名,也可以用路径区分,比如 example.com/flask 和 example.com/django,配置里改一下 location 块就行。
总结:用Nginx根据域名或路径做反向代理是标准做法。
Flask 和 Django 都可以改端口的
用 kong 做 gateway
不同端口 然后 nginx 反代
好的,我去试试。先感谢一下哈。
端口
一般情况下后面的 python 应用使用 uWSGI 或 gunicorn 跑在两个不同端口号上,前面用 Nginx 对不同域名反向代理 到对应的应用端口就行了。网上例子很多。
不同的域名对应到不同的端口
nginx 路径域名端口都可以,google
一个域名 一个端口
访问域名还添加端口,费事不?
是不是可以考虑使用 nginx 做一个反向代理呢
先感谢楼上各位回复~,无法通过 IP+不同端口 访问两个网站的原因找到了。给以后再碰到这个问题的同志们省点麻烦
原因:阿里云的主机服务默认只开放了几个特定的端口号。除了这几个,别的端口号是无法访问的。
解决:想用自己设定的端口号的话,就去网上找一下开放阿里云端口号的教程,开放自己的端口就好啦。
是也乎 ╮(╯▽╰)╭
用 ngnix 将内部端口映射到不同目录也可~


