我是 nginx 新手。我有 nginx 和一个监听端口 :5000 的 python webserver。
我想做类似 www.example.com/berlin 的事情并想从 127.0.0.1/?lat= 获取数据柏林&lon=柏林
我不知道如何设置请求位置时使用的查询字符串。
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:5000/;
}
location /berlin/ {
proxy_pass http://127.0.0.1:5000/?lat=52.5185931&lon=13.3941181/;
}
}
答案1
尝试这个:
server {
listen 80;
location = / {
proxy_pass http://127.0.0.1:5000/;
}
location ~ ^\/(.*)$ {
proxy_pass http://127.0.0.1:5000/?lat=$1&lon=$1;
}
}
如果请求 example.com/berlin,第二个位置块将捕获“berlin”,然后将其作为查询参数传递给网络服务器。
但请注意,这似乎是一个非常糟糕的主意,因为这会匹配任何未请求您的主页的内容(/
)。因此,即使请求 example.com/index.html 也会作为 /?lat=index.html&lon=index.html 传递给网络服务器。您可以通过使用某种前缀(如 example.com/city/berlin)或改进第二个位置块的正则表达式以不匹配某些内容(如 index.html)来防止这种情况