簡體   English   中英

Nginx 反向代理正則表達式過濾器

[英]Nginx Reverse Proxy Regex Filter

我正在將 NodeJS 反向代理從 Apache 遷移到 Nginx。 最后要解決的問題是如何過濾我的 NodeJS 后端的傳入 URI。

無論出於何種遺留原因,NodeJS API 響應諸如example.com/route/1001之類的 URI,而 Apache 前端和所有客戶端代碼實際上都發送到example.com/api/route/1001因此我希望剝離/api 部分的請求 URI 並僅將后半部分發送到節點 API。

我在 Regxr 中玩耍,試圖讓它正確,結果(?!api)\b\S+做得很好:regexr.com/4lp4e

但是,我不熟悉如何將其放入變量的 Nginx 語法。 這是我現在擁有的:

server {
  server_name <domain>;

  access_log  /var/log/nginx/<domain>-access.log;

  # API endpoint -  (?!api)\b\S+
  location /api {
    if ($request_uri ~* ((?!api)\b\S+) ) {
      set  $last $1;
    }
    add_header X-uri "$last";
    rewrite /api /$last break;
    #proxy_redirect off;
    proxy_pass http://127.0.0.1:4000;
  }

  listen 80;
  listen [::]:80;
}

嘗試在代理通行證的末尾添加尾隨/

proxy_pass http://127.0.0.1:4000/;

沒有尾隨/ ,將傳遞完整路徑:
http://127.0.0.1:4000/app/something

使用尾隨/ ,位置模式/app將替換為/
http://127.0.0.1:4000/something

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM