У меня есть apache 2.4.29 с активированным TLS для обработки статических файлов. Затем у меня есть прокси, настроенный для передачи динамического содержимого в NodeJS 10.5.0 с помощью:
Site.conf в apache, который настраивает прокси для Node:
ProxyPreserveHost On
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.0/8
RequestHeader add X-SSL off
ProxyPass "/s" "http://127.0.0.1:3001"
ProxyPassReverse "/s" "http://127.0.0.1:3001"
RewriteRule ^/s/(.*) http://127.0.0.1:3001/$1 [P,L]
ProxyPass "/n" "http://127.0.0.1:3001/n"
ProxyPassReverse "/n" "http://127.0.0.1:3001/n"
RewriteRule ^/n/(.*) http://127.0.0.1:3001/n/$1 [P,L]
Node / Express не имеет конфигурации TLS. Оба находятся на одной машине. В server.js у меня есть этот код для обработки сеансов:
var express = require('express'),
sessao = require('express-session'),
armazenamento_ficheiros = require('session-file-store')(sessao),
app = express();
app.set('trust proxy', 1); // trust first proxy
app.use(sessao({
store: new armazenamento_ficheiros(),
secret: 'teste',
name: 'xxx',
resave: true,
cookie: {secure: false }, //i also tried with true, auto and removing the property
saveUninitialized: true
}));
Проблема в том, что для каждого клиентского запроса динамического файла появляется файл JSON с идентификатором сеанса, а не только один. Кроме того, в браузере появляется сеанс идентификатора cookie с идентификатором, которого нет в файлах идентификатора сеанса Express. Я удалил и повторил, чтобы увидеть, что cookie был создан снова, а теперь это не так. Я уже запутался в таком большом количестве тестов.
Может ли кто-нибудь подсказать мне, как это правильно решить? Спасибо.
ОБНОВИТЬ Я изменил сценарий на:
app.use(sessao({
store: new armazenamento_ficheiros(),
secret: 'teste',
name: 'xxx',
resave: true,
proxy: true,
cookie: {secure: true },
saveUninitialized: true
}));
И теперь, если я использую URL-адрес для прямого доступа к NodeJS, он работает должным образом; он создает cookie с идентификатором сеанса. Но если я получаю доступ через Apache, я вижу команду set-cookie в полученном заголовке http, но браузер не создает файл cookie. Я подозреваю, что что-то не так в конфигурации Apache.
Итак, я добавил: RequestHeader установил X-Forwarded-Proto "https"
но проблема остается.
Помимо небольших проблем с конфигурациями ExpressJS и Apache, конечная проблема связана с отсутствием параметра учетных данных в запросе на выборку из JS. Подробнее здесь: введите описание ссылки здесь