Проблемы с файлами stati c - размещение приложения PHP в подкаталоге с использованием nginx - PullRequest
0 голосов
/ 01 апреля 2020

Я являюсь частью новой команды по существующему продукту, и ПО желает получить демо-версию, доступную по адресу domain.com/demo. У веб-сервера есть настройка nginx, настроенная предыдущей командой.

Я не очень знаком с nginx, но следовал этому руководству для настройки демонстрационной среды. Кажется, что он работает, за исключением того, что файлы stati c (изображения, css) по-прежнему обслуживаются из производственной среды.

Мы используем автоматизированную систему демплинга с символическими ссылками в / var / www/app/current и / var / www/demoapp/current. Конфигурация nginx выглядит следующим образом:

server {
    server_name www.domain.com;
    return 301 $scheme://domain.com$request_uri;
}
server {
    server_name domain.com [IP_ADDRESS];
    root /var/www/app/current/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }

    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }

    # CSS and Javascript
    location ~* \.(?:css|js|woff|woff2|ttf|otf|eot)$ {
        expires 1y;
        access_log off;
        add_header Cache-Control "public";
    }

    location ^~ /demo {
        alias /var/www/demoapp/current/public;
        try_files $uri $uri/ @demo;

        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            include fastcgi_params;
        }
        # Media: images, icons, video, audio, HTC
        location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
            expires 1M;
            access_log off;
            add_header Cache-Control "public";
        }
        # CSS and Javascript
        location ~* \.(?:css|js|woff|woff2|ttf|otf|eot)$ {
            expires 1y;
            access_log off;
            add_header Cache-Control "public";
        }
    }

    location @demo {
        rewrite /demo/(.*)$ /demo/index.php?/$1 last;
    }
    ...gzip & certbot configuration
}

Когда IS SH на сервере, я вижу, что наша автоматизированная система развертывания работает и новая CSS, которая должна быть доступным на веб-сайте скомпилировано в / var / www/demoapp/current/public/css/. Однако, когда я захожу на domain.com/demo, он показывает ту же таблицу стилей CSS, что и живая версия.

Также была проблема с демо-версия не обновляет PHP и HTML при развертывании на сервере. Я исправил это, перезагружая службу FPM при каждом развертывании, однако я подозреваю, что это также может иметь отношение к конфигурации nginx.

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

1 Ответ

0 голосов
/ 02 апреля 2020

Проблема не связана с nginx. Это было исправлено путем изменения каждого вхождения от

<link href="{{ mix('css/dashboard.css') }}" rel="stylesheet">

до

<link href="{{ asset('css/dashboard.css') }}" rel="stylesheet">.

...