Задать вопрос
@karminski
Senior React.JS Developer

Как настроить работу сайта Yii2 в Nginx для работы через location?

Вопрос в следующем. Имеется один домен (www.domain.com) и несколько веб-приложений на Yii2. Нужно настроить Nginx так, чтобы все веб-приложения открывались через location, например www.domain.com/site1 и при этом работал url rewrite. Все дело крутится на Debian 7.0.5. Поддомены под каждый сайт в моём случае не подходят - домен только www.

Мой конфиг:
server {
	charset utf-8;
	client_max_body_size 128M;

	listen 80;
	root /var/www;
	index index.php;

	error_log /var/log/nginx/error.log debug;

	location /site1/ {
		alias /var/www/site1/web/;
		try_files $uri $uri/ /index.php?$args;

		location ~ ^/site1/(.+\.php)$ {
			include yii.conf;
			fastcgi_param SCRIPT_FILENAME /var/www/test/web/index.php;
		}
	}

	location ~ /\.(ht|svn|git) {
		deny all;
	}
}


Файл yii.conf:
fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_hide_header "X-Powered-CMS";
fastcgi_hide_header "X-Powered-By";

fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
  • Вопрос задан
  • 8657 просмотров
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
vyachin
@vyachin
Ищу работу
На каждое приложение сделайте свою секцию server как написано тут www.yiiframework.com/doc-2.0/guide-start-installat... но везде укажите свой УНИКАЛЬНЫЙ НОМЕР ПОРТА listen 8081; отличный от 80 (можно даже unix socket прикутить, мне кажется еще быстрее работать будет). В основной секции server все сделайте через location с проксированием на конкретную секцию для нужного вам приложения.
server {
    server_name www.domain.com;
    location /site1 {
        proxy_pass http://127.0.0.1:8081;
    }
    location /site2 {
        proxy_pass http://127.0.0.1:8082;
    }
}
Ответ написан
Ваш ответ на вопрос

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

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