Как сделать универсальный конфиг сайтов nginx?

Мой сервер по умолчанию
server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /home/alexey/sites/$http_host;

	index index.php index.html index.htm index.nginx-debian.html;

	server_name $http_host;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}
	
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
	
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param QUERY_STRING    $query_string;
	}

	location ~ /\.ht {
		deny all;
	}
}


Я просто добавляю домен в /home/alexey/sites, в hosts и он работает
Я хочу сделать, чтоб если домен начинается с symfony, то root директория должна быть public
Как это сделать?

Если я заменяю $http_host на имя домена и добавляю в root путь до директории public, то всё работает, но хочется сделать универсальную настройку для всех сайтов

Примеры:
домен: test.local
root: /home/alexey/sites/test.local

домен: symfonytest.local
root: /home/alexey/sites/symfonytest.local/public
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
Softer
@Softer
Я думаю тут стоит использовать map
Для дефолта переменная будет пуста, для "~^symfony" - "/public". А потом клеить к root ее.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы