我有多个小瓶子应用程序。我想在同一台服务器(单域)上的不同端口上运行每个烧瓶应用程序。
例如说我有3个烧瓶应用程序
域名:api.test.com
我想在端口8080上运行tasks.py,在端口5000上运行users.py,在端口4500上运行analyze.py。
我想配置 uWSGI 和 nginx ,这样当我点击 api.test.com/task/xxxx 时,我想要请求被定向到端口 8080 (其中tasks.py正在运行), 同样 api.test.com/user/xxxx 应该指向 5000 和 api.test.com/analysis/xxxx 到 4500
答案 0 :(得分:1)
在我看来,你可以通过一个端口获得一个单独的uWSGI,但如果你喜欢这种思维方式,那么你可以按照下一个方式进行操作。
假设您已经在不同的端口上运行了几个uWSGI实例:8080,5000和4500。 然后你需要创建一个Nginx配置,其中包含大约以下内容(请阅读评论):
# webserver configuration
server {
# port to be listened by the web-server
listen 80;
# domain name with its aliases or the ip
server_name api.test.com;
# SETUP THREE LOCATION SECTIONS FOR EACH ACTION
location /task {
# AND SPECIFY THE NEEDED ADDRESS:PORT HERE
uwsgi_pass YOUR_SERVER_IP:8080;
# ONE MAY ALSO USE UNIX-SOCKET (IF ON THE SAME SERVER), INSTEAD OF A PORT
# uwsgi_pass unix:/path/to/the/socket.sock
include /etc/nginx/uwsgi_params; # stadard parms with environment variables required by a uwsgi app
}
location /user {
uwsgi_pass YOUR_SERVER_IP:5000;
include /etc/nginx/uwsgi_params;
}
location /analysis {
uwsgi_pass YOUR_SERVER_IP:4500;
include /etc/nginx/uwsgi_params;
}
}
我希望,您知道如何为每个端口运行三个uWSGI实例。
在我看来,这非常难看,因为为了添加任何新动作,您将不得不再次编辑Nginx配置。所以我不推荐这个解决方案,只是建议这个答案作为Nginx与其他网络服务器相关的功能的演示。