我有一个 python(flask) webapp。它可以通过前端的 nginx 访问。
假设,我的域名是:http://域名.com
我的网络应用程序正在运行http://127.0.0.1:5000
nginx配置:
upstream fapp {
server 127.0.0.1:5000;
}
server {
listen 80;
server_name domain.com www.domain.com;
location {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://fapp/;
proxy_intercept_errors on;
}
}
此应用程序有两个功能或路线:
假设第一个页面会给出一些数据 ID 为 1 的图形细节,第二个页面会给出不包含任何图形视图的细节。
我想要的是如果我打了http://domain.com/data/1,nginx 会给我以下数据:http://127.0.0.1/dataone/1“ 或者 ”http://127.0.0.1/datatwo/1“。
我怎样才能做到这一点?
更新 1:根据@Oldskool 的线索,我确实查看了分割客户端模块。
upstream fapp {
server 127.0.0.1:5000;
}
split_clients "${remote_addr}" $mydata {
50% "dataone";
50% "datatwo";
* "";
}
server {
listen 80;
server_name domain.com www.domain.com;
location {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://fapp/;
proxy_intercept_errors on;
}
location /data/ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://fapp/${mydata}/;
proxy_intercept_errors on;
}
}
但问题是如果我访问 http://domain.com/data/1或者 http://domain.com/data/35或者该号码上的任何内容不起作用,它会重定向到网址http://fapp/dataone/1或 35. 还有其他东西需要添加吗?或者我做错了吗?