私は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