regex - 如何转发以nginx中特定位置开头的所有路径?
问题描述
我想将所有以 /api/ (/api/* ??) 开头的路径转发到端口 1000,但实际配置要么只转发包含 "/api/" 的路径,而在 (/api/login 不是转发)
location /api/ {
proxy_pass http://localhost:1000/;
}
或者它根本不起作用
location ~ ^/api/(.*)$ {
proxy_pass http://localhost:1000/;
}
. 服务器被定义为休闲:
server {
listen 80;
keepalive_timeout 70;
server_name server_name;
location / {
root /var/www/html;
index index.html;
}
location /api/ {
proxy_pass http://localhost:1000/;
}
}
我将不胜感激任何帮助,谢谢!
解决方案
请注意:
location /api/ {
proxy_pass http://localhost:1000/;
}
如果有请求/api/foo
,那么您的 API 服务器会看到/foo
。
另一方面,如果(注意 没有斜杠proxy_pass
)你使用:
location /api/ {
proxy_pass http://localhost:1000;
}
然后对于相同的请求,您的 API 服务器将“按原样”接收请求:/api/foo
。
因此,请确保您使用正确的方法(斜杠/无斜杠),这取决于您的 API 服务器如何处理 URL(如果它被配置为处理/api/foo
URL,那么您不应该在proxy_pass
.
推荐阅读
- excel - 创建新文件并删除密码保护
- r - R:在更改点更新列值的 Tidyverse 方法(有什么问题?)
- javascript - 创建渐进式 Web 应用程序
- javascript - 选择函数来改变两个不同的值
- python - Python 日志记录,“KeyError:上下文”
- powershell - 如何模拟 Pester 的工作?
- python - Pandas:如何为数据集中的所有项目创建 userByItem pivot_table
- excel - Excel 宏自动激活
- xamarin - 如何在不使用 clear 方法的情况下清除 observable 集合
- angular - 如何使 mat-select 始终在 angular2 的表单字段下打开?