Я являюсь частью новой команды по существующему продукту, и ПО желает получить демо-версию, доступную по адресу 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.
Любая помощь по любой из этих проблем будет принята с благодарностью.