Назад | Перейти на главную страницу

Как обрабатывать идентификатор сеанса из expressjs за веб-сервером apache2.4

У меня есть 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. Подробнее здесь: введите описание ссылки здесь