Nginx. 替换代理传递的 URI 的一部分

Nginx. 替换代理传递的 URI 的一部分

我有一个 CMS 实例,其管理面板硬编码在/admin( https://example.com/admin) 处,并且无法通过 CMS 进行更改。我想尝试使用 Nginx 来执行此任务。CMS 作为 Nodejs 应用程序运行并由 提供服务proxy_pass

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    add_header X-Cache $upstream_cache_status;
    proxy_connect_timeout 30s;
    proxy_read_timeout 86400s;
    proxy_send_timeout 30s;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_pass http://localhost:8000;
}

是否可以仅使用 Nginxhttps://example.com/admin来替代https://example.com/custom?非常欢迎任何建议,因为我不知道从哪里开始。

PS 如果重要的话,CMS 就是 Directus。

更新。我尝试使用Nginx 反向代理 + URL 重写但它没有帮助。以下是我的尝试:

location /foo {
  rewrite /foo/(.*) /admin/$1 break;
  proxy_pass localhost:8000;
  proxy_redirect off;
  proxy_set_header Host $host;
}

给了我/foo=>/foo/admin/login?redirect=/foo/

location /foo {
  rewrite /foo/(.*) /$1 break;
  proxy_pass localhost:8000/admin;
  proxy_redirect off;
  proxy_set_header Host $host;
}

给了我/foo=>/admin/foo

相关内容