Если https-запрос уже пришел на сервер, то сервер должен иметь валидный сертификат, иначе в браузере будет выведено предупреждение о невалидном сертификате.
Вариант 1: забить на невалидность сертификата, все равно отдавать 403.
Вариант 2: получить wildcard-сертификат *.site2.ru
Вариант 3: в NS-записях домена явно прописать все поддомены. На несуществующий поддомен браузер даже не будет отправлять запрос.
Возможно, $this->session->data - это не массив, а magic-функция get. Соответственно, необходимо написать magic-функцию set или записывать данные по-другому.
Приглашаются телепаты:
1. Node.js слушает порт 8000, а из браузера идет обращение на порт 80.
2. сокет на /main, а загрузка либы почему то по другому адресу
Nginx роуты меняет?