Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Общая сессия для поддоменов для nginx


Recommended Posts

Здравствуйте.

Использую мультимагазин с поддоменами. Работает на FastCGI (nginx + PHP-FPM). Соответственно, .htaccess не используется, для обеспечения возможностей opencart и SEO - соответствующим образом настроенные конфиги поддоменов в nginx.

Купил очередной модуль, а там  в требованиях:

"если вы используете поддомены, установите для них одну сессию, для этого в .htaccess добавьте:
php_value session.cookie_domain .site.com"

Прошу подсказать как выполнить это требование для моего случая (что добавить в конфиг nginx)?

 

Пример используемого в поддоменах конфига:

server {
	server_name поддомен.мойсайт.ру www.поддомен.мойсайт.ру;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /var/www/httpd-logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/httpd-logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_мультимагазин_лежит;
	root $root_path;
	listen 111.111.111.111:80;

	location / {
		return 301 https://поддомен.мойсайт.ру$request_uri;
	}
}

server {
	server_name www.поддомен.мойсайт.ру;
	ssl on;
	ssl_certificate "/var/cert/1111.crtca";
	ssl_certificate_key "/var/cert/1111.key";
	ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /etc/certs/dhparam4096.pem;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /www/logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_мультимагазин_лежит;
	root $root_path;
	listen 111.111.111.111:443;

	location / {
		return 301 https://поддомен.мойсайт.ру$request_uri;
	}
}

server {
	server_name поддомен.мойсайт.ру;
	ssl on;
	ssl_certificate "/var/cert/поддомен.мойсайт.ру.crtca";
	ssl_certificate_key "/var/cert/поддомен.мойсайт.ру.key";
	ssl_ciphers EECDH:+ADS256:-3EDES:RSA+AES:!NULL:!RC4;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /etc/certs/dhparam4096.pem;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /var/www/httpd-logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/httpd-logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_поддомен_лежит;
	root $root_path;
	listen 111.111.111.111:443;

    location = /sitemap.xml {
    rewrite ^(.*)$ /index.php?route=feed/google_sitemap break; 
    } 
    
    location = /googlebase.xml {
    rewrite ^(.*)$ /index.php?route=feed/google_base break; 
    } 

    location @opencart {
    rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

	location / {
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	try_files $uri $uri/ @opencart;
	}

	location @php {
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
		fastcgi_pass unix:/var/www/php-fpm/advw.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}
}

 

Надіслати
Поділитися на інших сайтах


2 часа назад, Neuro75 сказал:

Здравствуйте.

Использую мультимагазин с поддоменами. Работает на FastCGI (nginx + PHP-FPM). Соответственно, .htaccess не используется, для обеспечения возможностей opencart и SEO - соответствующим образом настроенные конфиги поддоменов в nginx.

Купил очередной модуль, а там  в требованиях:

"если вы используете поддомены, установите для них одну сессию, для этого в .htaccess добавьте:
php_value session.cookie_domain .site.com"

Прошу подсказать как выполнить это требование для моего случая (что добавить в конфиг nginx)?

 

Пример используемого в поддоменах конфига:


server {
	server_name поддомен.мойсайт.ру www.поддомен.мойсайт.ру;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /var/www/httpd-logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/httpd-logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_мультимагазин_лежит;
	root $root_path;
	listen 111.111.111.111:80;

	location / {
		return 301 https://поддомен.мойсайт.ру$request_uri;
	}
}

server {
	server_name www.поддомен.мойсайт.ру;
	ssl on;
	ssl_certificate "/var/cert/1111.crtca";
	ssl_certificate_key "/var/cert/1111.key";
	ssl_ciphers EECDH:+AES256:-3DES:RSA+AES:!NULL:!RC4;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /etc/certs/dhparam4096.pem;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /www/logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_мультимагазин_лежит;
	root $root_path;
	listen 111.111.111.111:443;

	location / {
		return 301 https://поддомен.мойсайт.ру$request_uri;
	}
}

server {
	server_name поддомен.мойсайт.ру;
	ssl on;
	ssl_certificate "/var/cert/поддомен.мойсайт.ру.crtca";
	ssl_certificate_key "/var/cert/поддомен.мойсайт.ру.key";
	ssl_ciphers EECDH:+ADS256:-3EDES:RSA+AES:!NULL:!RC4;
	ssl_prefer_server_ciphers on;
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	ssl_dhparam /etc/certs/dhparam4096.pem;
	charset UTF-8;
	index index.php index.html;
	disable_symlinks if_not_owner from=$root_path;
	include /etc/nginx/vhosts-includes/*.conf;
	include /etc/nginx/vhosts-resources/поддомен.мойсайт.ру/*.conf;
	access_log /var/www/httpd-logs/поддомен.мойсайт.ру.access.log;
	error_log /var/www/httpd-logs/поддомен.мойсайт.ру.error.log notice;
	ssi on;
	set $root_path /var/www/директория_где_поддомен_лежит;
	root $root_path;
	listen 111.111.111.111:443;

    location = /sitemap.xml {
    rewrite ^(.*)$ /index.php?route=feed/google_sitemap break; 
    } 
    
    location = /googlebase.xml {
    rewrite ^(.*)$ /index.php?route=feed/google_base break; 
    } 

    location @opencart {
    rewrite ^/(.+)$ /index.php?_route_=$1 last;
    }

	location / {
		location ~ [^/]\.ph(p\d*|tml)$ {
			try_files /does_not_exists @php;
		}
	try_files $uri $uri/ @opencart;
	}

	location @php {
		fastcgi_index index.php;
		fastcgi_param PHP_ADMIN_VALUE "sendmail_path = /usr/sbin/sendmail -t -i -f [email protected]";
		fastcgi_pass unix:/var/www/php-fpm/advw.sock;
		fastcgi_split_path_info ^((?U).+\.ph(?:p\d*|tml))(/?.+)$;
		try_files $uri =404;
		include fastcgi_params;
	}
}

 

Посмотрите https://serverfault.com/questions/755507/how-to-set-php-value-session-cookie-domain-in-nginx-config

Надіслати
Поділитися на інших сайтах

3 часа назад, nikifalex сказал:

лучше установить эту переменную в конфиге php.ini, где ей и место, и не парить nginx всякой непотребностью.

Все верно, найдите ваш php.ini файл (например /etc/php/7.1/fpm).

В нем установите значение 

session.cookie_domain = ".example.com"

Затем сделайте рестарт php.

  • +1 1
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.