Назад | Перейти на главную страницу

Хост Nginx SetEnvIf

Предыдущий сервер работал на 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