我如何使用 NGINX 作为反向代理,为我的特定用例传递查询字符串参数
How do I use NGINX as a reverse proxy, passing query string parameters for my specific use case
我有如下所示的 NGINX 配置。
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/comment/ {
rewrite /api/v1/comment(.*) /api/v1/comment break;
proxy_pass http://api/;
}
以下路径组合有效,return 来自上游的数据 API 但前两个路径有额外的尾部斜杠,这并不理想:
- api/v1/comment/?foo=1234
- api/v1/comment/
- api/v1/comment/1
我希望使用以下路径组合:
- api/v1/comment?foo=1234(而不是api/v1/comment/?foo=1234)
- api/v1/comment(而不是 api/v1/comment/)
- api/v1/comment/1(现在可用 - 这是需要的)
我一直在努力让这个按原样工作,我想知道是否有任何伟大的 Whosebugers 可以帮助一个人在弄清楚我想要完成的事情时有所帮助。我在网上尝试过的大多数答案都没有用,这是我找到的第一个有用的东西……有点……为了这个目的。
谢谢!
真不敢相信我以前没看到它...
而不是将 /comment/ 保留为重写命令中位置和 /comment 的一部分:
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/comment/ {
rewrite /api/v1/comment(.*) /api/v1/comment break;
proxy_pass http://api/;
}
我从位置删除了 /comment/ 并从重写命令中删除了 /comment:
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/ {
rewrite /api/v1(.*) /api/v1 break;
proxy_pass http://api/;
}
这样一来,我就不必在与反向代理进行通信时使用额外的 / 来与 API 进行通信。
我有如下所示的 NGINX 配置。
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/comment/ {
rewrite /api/v1/comment(.*) /api/v1/comment break;
proxy_pass http://api/;
}
以下路径组合有效,return 来自上游的数据 API 但前两个路径有额外的尾部斜杠,这并不理想:
- api/v1/comment/?foo=1234
- api/v1/comment/
- api/v1/comment/1
我希望使用以下路径组合:
- api/v1/comment?foo=1234(而不是api/v1/comment/?foo=1234)
- api/v1/comment(而不是 api/v1/comment/)
- api/v1/comment/1(现在可用 - 这是需要的)
我一直在努力让这个按原样工作,我想知道是否有任何伟大的 Whosebugers 可以帮助一个人在弄清楚我想要完成的事情时有所帮助。我在网上尝试过的大多数答案都没有用,这是我找到的第一个有用的东西……有点……为了这个目的。
谢谢!
真不敢相信我以前没看到它...
而不是将 /comment/ 保留为重写命令中位置和 /comment 的一部分:
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/comment/ {
rewrite /api/v1/comment(.*) /api/v1/comment break;
proxy_pass http://api/;
}
我从位置删除了 /comment/ 并从重写命令中删除了 /comment:
upstream api {
...
}
server {
listen 2023;
server_name www.server.com;
location /api/v1/ {
rewrite /api/v1(.*) /api/v1 break;
proxy_pass http://api/;
}
这样一来,我就不必在与反向代理进行通信时使用额外的 / 来与 API 进行通信。