Я запускаю сервер предварительного рендеринга, и все в порядке, но теперь я хочу установить некоторую безопасность, используя basicAuth.
В моей консоли я экспортировал имя пользователя и пароль
export BASIC_AUTH_USERNAME=hugo
export BASIC_AUTH_PASSWORD=boss
В моем server.js я добавил эту строку:
server.use(prerender.basicAuth());
Но теперь вопрос в том, как мне настроить мой экспресс-сервер для вызова предварительной визуализации с правильным пользователем/паролем. У меня есть это :
var prerender = require('prerender-node').set('prerenderServiceUrl', 'http://123.123.123.123:3000/');
prerender.set('protocol', 'https');
Я не нахожу никаких документов, я ожидаю что-то вроде:
prerender.set('user', 'hugo');
prerender.set('pass', 'boss');
Я был бы признателен за вашу помощь. Спасибо и счастливого Рождества :)
app.use(prerender);
РЕШЕНИЕ
Как часто, решение простое, когда вы четко понимаете проблему...
Вместо :
var prerender = require('prerender-node').set('prerenderServiceUrl', 'http://123.123.123.123:3000/');
Просто :
var prerender = require('prerender-node').set('prerenderServiceUrl', 'http://hugo:[email protected]:3000/');
НО НОВАЯ ПРОБЛЕМА
Экспортированные переменные среды (BASIC_AUTH_USERNAME и BASIC_AUTH_PASSWORD) доступны при запуске моего скрипта следующим образом:
node server.js
Но поскольку я хочу, чтобы они работали все время, я делаю:
forever start server.js
и в этом случае переменные среды больше недоступны ... Я открою новый вопрос, поскольку он связан, но не о первом вопросе!
НО НАДЕЕМСЯ, НОВОЕ РЕШЕНИЕ
Даже если мне это не нравится, потому что я бы предпочел установить переменную env только один раз, используя навсегда, как и трюк:
BASIC_AUTH_USERNAME=hugo BASIC_AUTH_PASSWORD=boss forever start server.js
ОБНОВЛЕНИЕ 05.05.2016
Теперь я перешел на supervisor для запуска моих фоновых серверов nodejs, вот мой раздел предварительного рендеринга (обратите внимание, как передаются переменные среды)
[program:prerender]
environment =
BASIC_AUTH_USERNAME=hugo,
BASIC_AUTH_PASSWORD=boss
command=bash -c "ulimit -n 10000;exec nodejs /home/hugo/prerender/server.js"
process_name=prerender
numprocs=1
autostart=true
autorestart=true
user=hugo
stdout_logfile=/home/hugo/supervisor-prerender-info.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/home/hugo/supervisor-prerender-error.log
stderr_logfile_maxbytes=1MB
У меня была странная проблема с перенаправлением .htaccess, так как
RewriteRule ^(?!.*?(\.js|...|\.woff))(.*) http://hugo:[email protected]:3000/https://my-website.com/$2 [P,L]
не добавлял правильные заголовки запроса Basic Auth, поэтому предварительный рендер отклонял снимок (401), мне пришлось активировать модуль заголовков Apache (заголовки sudo a2enmod) и добавить эту строку выше предыдущей:
RequestHeader set Authorization "Basic aHVnbzpib3Nz"
Код aHVnbzpib3Nz генерируется командной строкой:
echo -n 'hugo:boss' | base64