Я ищу способ настроить nginx с помощью приложения php.
Он должен обслуживать статические файлы, если они существуют. Если они находятся в подпапке /dev, они разрешены только для 127.0.0.1;
URI, который не является статическим файлом, должен быть перенаправлен на php через третий блок локации.
Если этот uri, который идет в php, начинается с /dev, я хочу, чтобы uri был переписан без /dev, и fastcgi_param APP_ENV установлен в "dev". (А также быть заблокированным для любого, кроме 127.0.0.1)
Если это URI не начинается с /dev, я просто хочу установить fastcgi_param APP_ENV в "prod", без переписывания.
server {
root /var/www/homeserver/public;
location /dev {
allow 127.0.0.1;
deny all;
# This has no effect on the third location block:
fastcgi_param APP_ENV dev;
# This is only OK for when try_files pass the uri to /index.php
rewrite ^/dev(.*)$ /$1 last;
try_files $uri /index.php$is_args$args;
}
location / {
# This has no effect on the third location block:
fastcgi_param APP_ENV prod;
try_files $uri /index.php$is_args$args;
}
# Front controler :
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
}
Я попытался решить это с помощью "если" заявления. Безуспешно.
Как я могу настроить это?