排除子目录

排除子目录

我在 example.com 上托管了 Laravel 和 Nuxt

Nuxt 在端口上运行,例如 example.com:3001

Laravel API 在 example.com/api/{dynamic} 上运行

现在我只想在 Nuxt 上呈现主页,并尝试以下操作:

ServerName example.com

ProxyPreserveHost On


ProxyPass / http://127.0.0.1:3001/
ProxyPassReverse / http://127.0.0.1:3001/

但是它也会代理 API 端点。我该怎么办?

答案1

需要记住两件事ProxyPass

排除子目录

!当您不想反向代理子目录/位置的情况时使用该指令。

ProxyPass "/api/"    "!"

订购ProxyPass指令

按照配置的顺序检查配置的ProxyPass规则。第一个匹配的规则获胜。ProxyPassMatch


因此,为了完全排除所有/api/*子目录,使其不包含在根的反向代理定义中,需要定义/排除/api第一的

ProxyPass "/api/"    "!"
ProxyPass "/"        "http://127.0.0.1:3001/"
ProxyPassReverse "/" "http://127.0.0.1:3001/"

或者稍微复杂一点,在不同的端点上有几个额外的 API:

ProxyPass "/api/demo/" "http://demo.example.com:3002/"
ProxyPassReverse "/api/demo/" "http://demo.example.com:3002/"
ProxyPass "/api/test/" "http://test.example.com:8080/"
ProxyPassReverse "/api/test/" "http://test.example.com:8080/"
ProxyPass "/api/"    "!"
ProxyPass "/"        "http://127.0.0.1:3001/"
ProxyPassReverse "/" "http://127.0.0.1:3001/"

相关内容