пререндерить конфигурацию basicAuth

Я запускаю сервер предварительного рендеринга, и все в порядке, но теперь я хочу установить некоторую безопасность, используя 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

person hugsbrugs    schedule 24.12.2014    source источник


Ответы (1)


Вы можете создать bash-скрипт с именем init.sh:

export BASIC_AUTH_USERNAME=hugo 
export BASIC_AUTH_PASSWORD=boss
echo "Running prerender"
forever start server.js

Затем дайте разрешения на выполнение:

chmod +x ./init.sh

После этого вы можете запустить скрипт с помощью ./init.sh или поместить его в сценарий запуска (systemd, sysv), чтобы он выполнялся при загрузке компьютера.

person Mr Rivero    schedule 10.11.2015