我在 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/"