4

私はprerender サーバーを実行していますが、すべて問題ありませんが、 basicAuthを使用してセキュリティを設定したいと考えています。

コンソールで、ユーザー名とパスワードをエクスポートしました

export BASIC_AUTH_USERNAME=hugo
export BASIC_AUTH_PASSWORD=boss

私のserver.jsに、次の行を追加しました:

server.use(prerender.basicAuth());

しかし、問題は、正しいユーザー/パスで prerender を呼び出すように Express サーバーをどのように構成すればよいかということです。私はこれを持っています:

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変数を1回だけ設定したいので気に入らない場合でも、永遠のように使用してトリックを行いました:

BASIC_AUTH_USERNAME=hugo BASIC_AUTH_PASSWORD=boss forever start server.js

2016/05/05更新

nodejs バックグラウンド サーバーを実行するためにスーパーバイザーに移動しました。ここに私の prerender セクションがあります (環境変数がどのように渡されるかに注意してください)

[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
4

1 に答える 1

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) を使用してスクリプトを実行するか、スクリプトを配置することができます。

于 2015-11-10T15:44:40.367 に答える