我有几个API端点,我想从一个位置提供服务,/api
并且子路径将传递到不同的端点。具体来说,我希望可以在以下位置使用webdis并在上使用/api
专有的API /api/mypath
。
我不担心与webdis API发生冲突,因为我使用的子路径不太可能与redis命令名称发生冲突,并且对API的设计有完全的控制权以避免冲突。
这是我一直在使用的测试服务器上的配置文件:
server {
listen 80;
server_name localhost;
server_name 192.168.3.90;
server_name 127.0.0.1;
location / {
root /home/me/src/phoenix/ui;
index index.html;
}
# temporary hardcoded workaround
location = /api/mypath/about {
proxy_pass http://localhost:3936/v1/about;
}
location /api {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://localhost:7379/;
}
# tried this but it gives "not found" error
#location ^~ /api/mypath/ {
# rewrite ^/api/mypath/(.*)$ /$1 break;
# proxy_pass http://localhost:3936/v1/;
#}
#
#location ^~ /api {
# rewrite ^/api/(.*)$ /$1 break;
# proxy_pass http://localhost:7379/;
#}
}
如何更改我的解决方法,以便将任何请求发送/api/mypath/*
到端口3936的端点,并将所有其他请求发送到端口7379?
谢谢您的提示,它给出了一个未找到的错误,在进一步调查中,似乎该错误来自我的API,因此可以正常工作!:D但是重写规则显然不是因为我必须将v1添加到URL(localhost / api / mypath / v1 / about)... :(
—
hamstar 2014年
tried this to no avail
?启用该位置指令后会发生什么?连接超时?位置不符?