Nano Hash - криптовалюты, майнинг, программирование

Запуск Laravel и AngularJS на NGINX

Я запускаю Laravel для серверной части и AngularJS для внешнего интерфейса. Моя иерархия приложений

/application
    /app
    /bootstrap
    /vendor   
    /public
        /api 
            index.php <-- This is the Laravel "public" index
        index.html
        bootstrap.js

Таким образом, папка public по умолчанию используется для внешнего интерфейса AngularJS, а папка /public/api используется для Laravel.

Я не могу понять, как написать конфиг NGINX! Это то, что у меня есть до сих пор

server {
        listen   80;

        root PATH_TO_PUBLIC;
        index index.php index.html index.htm;

        server_name mysite.com;

        # AnuglarJS UI Front /index.html
        location / {
                try_files $uri $uri/
        }

        # Laravel Back-end /api/index.php
        location /api/ {
                try_files $uri $uri/ /index.php$is_args$args;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/html;
        }

        # pass the PHP scripts to FastCGI server listening on the php-fpm socket
        location ~ \.php$ {
                try_files $uri / =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

Единственная работающая страница Laravel — /api/index.php. Даже что-то вроде /api/index.php/my-resource тоже не работает.

Изменить

Когда я посещаю /api/index.php, Laravel включается и работает. Когда я захожу на любую другую страницу (например, /api/sessions или /api/index.php/sessions), загружается домашняя страница /index.html.


  • Когда вы говорите, что не работает, что вы имеете в виду? Nginx выдает 404 или другую ошибку, или вы получаете NotFoundHttpExceptions (от laravel)? или что-то другое? 16.07.2014
  • Нет, он загружает домашнюю страницу /index.html. Я обновлю вопрос более подробно 16.07.2014
  • Зачем вам менять структуру Laravels? я не понимаю. 18.07.2019

Ответы:


1

Моя ситуация немного отличалась от вашей, потому что я сделал все возможное, чтобы приложения Angular и Laravel находились в отдельных каталогах и в отдельном контроле версий, но я столкнулся с теми же проблемами, что и вы, и мое решение ниже .

Ключевое отличие заключается в использовании «псевдонима» в местоположении .php$. Он указывает nginx использовать другой базовый путь, чтобы начать поиск файлов, что поможет ему правильно найти index.php. Это необходимо, потому что Angular и Laravel должны ссылаться на файлы с разных базовых путей.

server {
    listen   80;

    root /path/to/application/app/public; # Path to Public
    index index.php index.html index.htm;

    server_name mysite.com;

    # AnuglarJS UI Front /index.html
    location / {
        try_files $uri $uri/
    }

    # Laravel Back-end /api/index.php
    location /api/ {
        try_files $uri $uri/ /index.php$query_string; # Minor adjustment here - a simpler solution that achieves the same thing
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    # pass the PHP scripts to FastCGI server listening on the php-fpm socket
    location ~ \.php$ {
        #---------------------------------------------------------------
        alias /path/to/application/app/public/api; # Path to directory containing index.php
        #---------------------------------------------------------------                try_files $uri / =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
15.11.2016
  • Я надеюсь, что у каждого хоста должен быть отдельный файл конфигурации nginx. Я в том же случае и пытаюсь решить, как только закончу, опубликую правильный ответ. 21.12.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..