用于静态Vue SPA和PHP应用程序的Nginx配置



我知道这无论如何都不是一个理想的设置,但我希望有人能帮助我实现这个场景。本质上,我有两个:

  • Vue SPA应用

    • 营销前端
    • 只有少数URI:
      • hxxps://domain.com
      • hxxps://domain.com/#/{主页|联系人|登录
  • Codeigniter(CI(PHP应用

    • 主要应用程序
    • 集中式路由器&类似Laravel的(index.php?$uri(,带有几个uri端点:
    • hxxps://domain.com/{仪表板|帐户|

我真的在努力避免在Codeigniter中嵌入静态Vue应用程序(似乎是额外的开销(,并避免代理方法,因为它是静态内容,不需要Node运行。

以下是我迄今为止对Nginx配置的尝试:

/etc/nginx/站点可用/默认

server {
root /var/www;
index index.php index.html;
location / {
# Codeigniter
try_files $uri $uri/ /index.php?/$request_uri;
# Vue SPA
if ($uri ~ '') {
root /var/www/path_to_spa/dist;
}
}
}

我为这两个应用程序成功硬连接的资产路径。

这对于Vue和CI应用程序之间的路由来说似乎足够好了,但CI应用程序现在无法处理POST和重定向请求,因为我得到了404个请求——可能是因为URI检查不严。

Nginx禁止条件(if(try_files语句,所以我觉得我的手很紧。想知道是否有人能在这里提供更优雅的解决方案:(

如果您已经使用的配置很好,并且只在POST请求中给出错误,那么您可以检查它是否是POST?

server { 
set $vue 0;
root /var/www;
index index.php index.html;
location / {
# Codeigniter
try_files $uri $uri/ /index.php?/$request_uri;
if( $uri = '' ) {
set $vue 1;
}
if ($request_method = POST ) {
set $vue 0; 
}
#Vue SPA
if( $vue = 1 ) {
root /var/www/path_to_spa/dist;
}
}
}

未经测试,但我认为你可以做到。干杯

相关内容

  • 没有找到相关文章

最新更新