Nginx и два сайта на одном домене

Есть 2 сайта на одном домене, управляется все это дело чистым свежим nginx. В зависимости от значения переменной $var мне нужно выдавать разные версии сайта. Сайты лежат в одной общей директории:

Директория родитель \
Директория родитель \ Сайт1
Директория родитель \ Сайт2

$var принимает значения Сайт1 и Сайт2.

Для одного сайта все понятно, конфиг nginx принимает следующий вид:

server {
  listen 80;
  server_name domain.com;
  
  root /var/www/Общая директория; 
  index index.php index.html;

  location / {
      try_files $uri $uri/ /index.php?q=$uri&$args;
  }


  location ~ /index.php {
      include fastcgi_params;
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
       
  location ~* \.(php|tpl|xml|log)$ { return 403; }
} 


Как правильно переделать данный конфиг, для решения данной задачи?
  • Вопрос задан
  • 21927 просмотров
Решения вопроса 1
Дарю универсальный конфиг для кучи проксируемых черех nginx доменов c автоматическим редиректом доменов с www на без www. Сервер на Убунту.

nginx.conf
user www-data;
worker_processes 1;
pid /var/run/nginx.pid;

events {
	worker_connections 4096;
	multi_accept on;
}

http {


	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	client_max_body_size 100M;
	types_hash_max_size 2048;

	server_names_hash_bucket_size 64;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;


	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;


	gzip on;
	gzip_disable "msie6";

	gzip_vary on;
	gzip_proxied any;
	gzip_comp_level 5;
	gzip_buffers 16 8k;
	gzip_http_version 1.1;
	gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	map $host $host_wo_www {
		default $host;
		~^www\.(?P<wo_www>.+)$ $wo_www;
	}
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}



В sites-enabled/default
server {
	listen 80;
	server_name ~^(?:www\.)?(?P<host_wo_www>.+)$;
	server_name_in_redirect	off;
	resolver	127.0.0.1;

	access_log	/var/log/httpd/$host/access.log;
	location	~* \.(?:jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|dic|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|flv|mp3)$
	{
		root	/var/www/$host_wo_www/www;
		access_log off;
		expires	30d;
		add_header Pragma public;
		add_header Cache-Control public;
	}

	location / {
		root	/var/www/$host_wo_www/www;
		index	index.html index.htm index.php;
		access_log	off;
		proxy_pass http://127.0.0.1:8081;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AGvin
@AGvin
В общем, в «location / » Вы можете прописать еще пару location-ов

server {
    listen   80;
    server_name domain.com;

    location / {
	root   /var/www/path/to/;
	...
    	location /project1/ {
	    root /var/www/path/to/project1/;
	    ...
	}
    	location /project2/ {
	    root /var/www/path/to/project2/;
	    ...
	}
    }
}

Где "..." — общие параметры (тот же «include fastcgi_params;» или «fastcgi_pass unix:/var/run/php5-fpm.sock;»). Их Вы можете вынести в другой конфиг и подключить с помощью «include»
Ответ написан
BuriK666
@BuriK666 Куратор тега Nginx
Компьютерный псих
добавьте
root /var/www/$var;


Откуда у Вас берется $var?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы