prerender basicAuth配置

时间:2014-12-24 17:23:10

标签: basic-authentication supervisord prerender

我正在运行prerender server,一切正常,但现在我想使用basicAuth设置一些安全性。

在我的控制台中,我已导出用户名密码

export BASIC_AUTH_USERNAME=hugo
export BASIC_AUTH_PASSWORD=boss

在我的server.js中,我添加了这一行:

server.use(prerender.basicAuth());

但现在的问题是,我如何配置我的快速服务器以正确的用户/通行证调用prerender。我有这个:

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:boss@123.123.123.123: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

2016/05/05更新

我现在已经移动了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:boss@123.123.123.123:3000/https://my-website.com/$2 [P,L]

没有添加正确的Basic Auth请求标头所以prerender拒绝快照(401),我不得不激活Apache标头模块(sudo a2enmod标头) 并将此行添加到上一行:

RequestHeader set Authorization "Basic aHVnbzpib3Nz"

代码aHVnbzpib3Nz由命令行生成:

echo -n 'hugo:boss' | base64

1 个答案:

答案 0 :(得分:0)

您可以创建一个名为init.sh的bash脚本:

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)中,以便在计算机启动时执行。