Am o aplicație Symfony 5 la domain.tld cu această configurație de bază nginx:
harta „$http_cloudfront_forwarded_proto:$http_x_forwarded_proto” $cloudfront_proto {
implicit „http”;
„~https” „https”;
}
Server {
nume_server domeniu.tld;
asculta 80 backlog=65535;
root /var/www/project/public;
client_max_body_size 500M;
Locație / {
# încercați să serviți fișierul direct, reveniți la index.php
try_files $uri /index.php$is_args$args;
}
# opțional dezactivați revenirea la scriptul PHP pentru directoarele de active;
# nginx va returna o eroare 404 atunci când fișierele nu sunt găsite în loc să treacă
# cerere către Symfony (îmbunătățește performanța, dar pagina 404 a Symfony nu este afișată)
# locație/pachete {
# try_files $uri =404;
# }
locație ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
# opțional setați valoarea variabilelor de mediu utilizate în aplicație
# fastcgi_param APP_ENV prod;
# fastcgi_param APP_SECRET <app-secret-id>;
# fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";
fastcgi_param HTTP_X_FORWARDED_PROTO $cloudfront_proto;
# Când utilizați legături simbolice pentru a lega rădăcina documentului la
# versiunea curentă a aplicației dvs., ar trebui să treceți pe cea reală
# calea aplicației în loc de calea către linkul simbolic către PHP
# FPM.
# În caz contrar, este posibil ca OPcache-ul PHP să nu detecteze corect modificările aduse
# fișierele dvs. PHP (consultați https://github.com/zendtech/ZendOptimizerPlus/issues/126
# pentru mai multe informatii).
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
# Previne URI-urile care includ controlerul frontal. Aceasta va 404:
# http://domain.tld/index.php/some-path
# Eliminați directiva internă pentru a permite URI-uri ca acesta
intern;
}
# returnează 404 pentru toate celelalte fișiere php care nu se potrivesc cu controlerul frontal
# acest lucru împiedică accesul la alte fișiere php pe care nu doriți să le fie accesibile.
locație ~ \.php$ {
întoarce 404;
}
error_log /var/log/nginx/project_error.log;
access_log /var/log/nginx/project_access.log;
}
Cazul meu de utilizare:
Am mai multe rute:
/site/{siteUrl}
/site/{siteUrl}/*
/site/{siteUrl}/*/*
...
ca:
Vreau să accesez aceste rute cu un URL like
Nu vreau o redirecționare, dar o regulă de rescriere pentru toate adresele URL încep cu prefix.domain.tld indică către /site/prefix.domain.tld URL-uri și toate celelalte adrese URL ale activelor statice, cum ar fi prefix.domain.tld/build/css/ custom.css funcționează.
Încerc să adaug un nou bloc de server cu această adăugare:
Server {
prefix nume_server.*;
root /var/www/project/public;
asculta 80;
client_max_body_size 100M;
locație = / {
rescrie ^ /index.php/site/$host break;
}
...
Dar nu a mers deloc...
Ma poti ajuta ? :D
Mulțumiri