Я получил один и тот же конфигурационный файл nginx при разработке и в производстве, и рабочий сервер продолжает перенаправлять ссылки на ресурсы (и только ссылки на ресурсы) на домашнюю страницу. Другие ссылки, которые обслуживаются маршрутом просмотра лезвия, в порядке.
Так что ссылка на https://subdomain.example.com/test
будет работать нормально, при условии, что в маршрутах Laravel есть вид.
Но ссылка на https://subdomain.example.com/img/picture-of-a-cat.png
будет перенаправлена обратно на домашний экран, но в адресной строке все равно будет отображаться https://subdomain.example.com/img/picture-of-a-cat.png
. Такое поведение наблюдается только в производстве.
Разобрать детали: Ubuntu 18.4, Nginx, Laravel, последние
Где подвох?
Конфигурация производства:
server {
listen 80;
listen [::]:80;
server_name subdomain.example.com
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name subdomain.example.com;
root /var/www/html/public;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
ssl_certificate /etc/ssl/certs/example-cert.cer;
ssl_certificate_key /etc/ssl/private/example-private-key.key;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
}