Nginx Config用于相同server_name下的项目

时间:2019-03-07 09:43:02

标签: symfony nginx vue.js

我目前正在与Symfony和VueJS一起从事一个项目。 Symfony是我的应用程序以及API的最前端,而VueJS则用作后台。

我想知道是否可以将两个项目都用相同的域名命名,并有区分它们的路径。

包括这一点,我还希望两个框架有一个唯一的联系。通常,我们保持与Symfony会话以及由Symfony API for VueJS提供的OAuth令牌保持联系。

为此,我现在每次有人成功连接到应用程序时都创建一个OAuth令牌,并将其保存到本地存储中,就像VueJS拥有的那样。

但是我现在需要将良好的配置放入nginx中,以便它们都可以在相同的域名下运行。

请不要犹豫告诉我要提供更多信息,我希望可以做到!如果没有,我愿意提出建议!

编辑:

location / {
    try_files $uri /app.php$is_args$args;
}

location /admin {
    alias /path/admin/public/dist;
    index index.html;
    try_files $uri $uri/ /index.html;
}

location ~ /public/dist/* {
    alias /path/admin/public/dist;
    try_files $uri $uri/ /index.html;
}
location ~ ^/app\.php(/|$) {
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $realpath_root;
    internal;
}

通过这种配置,我设法访问了VueJS部分,几乎所有资源都已加载(错误地调用了一个资源)。 访问页面后,vueJS将启动,并将URL重写为/ admin / login。我可以登录,可以毫无问题地访问所有页面,但是当我重新加载时,nginx不再识别该路径,并且将我重定向到Symfony 404错误。

1 个答案:

答案 0 :(得分:0)

当然,您可以使用“位置”指令完成所需的操作。

示例:

server {
    listen 80;
    server_name example.com;

    location / {
        # document root, proxy pass or whatever to vuejs.
    }

    location /api {
        # document root, proxy pass or whatever to symfony.
    }
}