Докер Laravel Vuejs Nginx, проблемы загрузки активов - PullRequest
0 голосов
/ 08 января 2019

Я не могу заставить мою конфигурацию Nginx работать правильно.

У меня есть приложение Laravel, но / admin uri перенаправляется Nginx в приложение vuejs.

Файл index.html приложения VueJS загружается нормально, но ресурсы - нет, поэтому приложение не работает.

Приложение Laravel и приложения VueJS находятся в двух отдельных контейнерах Docker, запущенных с помощью docker-compose.

Я пытался поиграть с различными комбинациями "try_files" в разделе "location / admin {}", но пока безуспешно. Эти корректировки привели к 404 с для всего или 500 ошибок сервера.

Вот мой конф Nginx:

server {
    listen 80;
    listen [::]:80;

    client_max_body_size 200M;
    disable_symlinks off;
    server_tokens off;
    index index.php;
    root /var/www/public;

    location /admin {
        root /var/www/public/dist;      
        proxy_pass http://admin:8001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
     }

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

    location ~ \.php {
        try_files $uri =404;
        fastcgi_pass http://app:9000;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_param REALPATHTEST $realpath_root;
        internal;
    }
}

Вот скриншоты, показывающие, что index.html загрузился нормально, но не ресурсы js & css:

Вывод HTML в Chrome:

HTML output in Chrome

200 Результат для страницы и 404 ошибки для ресурсов:

200 Result for page and 404 errors for assets

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

В итоге все, что мне было нужно, это:

location /admin {
    rewrite ^/admin(.*) /$1 break;
    proxy_pass http://admin:8001;
}

Итак, моя последняя конфигурация nginx:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    client_max_body_size 200M;
    disable_symlinks off;
    server_tokens off;
    index index.php;
    root /var/www/public;

    location /admin {
        rewrite ^/admin(.*) /$1 break;
        proxy_pass http://admin:8001;
    }

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

    location ~ \.php {
        try_files $uri =404;
        fastcgi_pass app:9000;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_param REALPATHTEST $realpath_root;
        internal;
    }
}

Я действительно надеюсь, что это сэкономит кому-то время !!

0 голосов
/ 08 января 2019

Если вы используете vue-cli для настройки вашего проекта vue, установите baseUrl на /admin

В противном случае вам нужно будет добавить префикс к вашему сгенерированному ресурсу vue.js к /admin или сделать nginx пробными файлами в рамках проекта vue для каждого /css и /js запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...