Предыдущий сервер работал на Apache, но теперь я перешел на Nginx. Все работает отлично, за исключением того, что я не знаю, как преобразовать эту строку Apache в мою рабочую конфигурацию nginx.
SetEnvIf Host "^([^\.]+)\.my-shop\.dev$" MY_ENV=$1
Что ему нужно сделать, так это то, что он должен прочитать кулак "param / subdomain / something" и установить его как переменную среды
Пока я пытаюсь добиться этого, делая что-то вроде этого, но это не работает
server {
listen 80 ;
server_name $\.my-shop\.dev;
location ~* \.php$ {
try_files $uri $uri/ /index.php?q=&$args;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param MY_ENV $1;
}
}
Если вам нужна дополнительная информация, дайте мне знать, и я предоставлю. Спасибо!
чтобы захватить ведущую часть поддомена вашего магазина, вы можете использовать что-то вроде этого:
server {
listen 80 ;
# match and catch the subdomain part in $prefix for later usage:
server_name ~^(?<prefix>.+)\.my-shop\.dev$;
location ~* \.php$ {
[...] # removed for better readability
# add MY_ENV env variable to the value of earlier captured $prefix:
fastcgi_param MY_ENV $prefix;
}
}
Это объясняется более подробно и другими сценариями использования в http://nginx.org/en/docs/http/server_names.html#regex_names