6

リバース プロキシとして利用可能な別のサーバー上の複数のリソースにアクセスできるように構成された Nginx を実行しています。例えば

main server:http://example.com
slave: http://example.com/slave
adminer on slave: http://example.com/slave/admin/adminer.php

これまでのところすべて順調です。Adminer に自分の DB ユーザー名とパスワードを入力すると、トラブルが発生します。管理者のログイン後に返されたヘッダーを調べると、

Location:/admin/adminer.php?username=user

ヘッダ。これが悩みの根源です。私のブラウザでは、当然のことながら、これはリバース プロキシではなく、現在のサーバーに対する相対的な意味として解釈されます。Location ヘッダーがある 1 つの場所を見つけた後、管理者コードをハッキングしようとしましたが、その場所で停止しました。

どうすればこれを防ぐことができますか? ヘッダーを調べて置き換えるLuaスクリプトをNginxで実行することを検討しましたが、それが機能したとしても、サーバーに大量の不要な作業を行わせることになります。

これについて何か助けていただければ幸いです。


編集

この問題をもう少し調査した後、管理者はそれほど間違ったことをしていないのではないかと考え始めています。実際には $_SERVER['REQUEST_URI'] 値を使用してロケーション ヘッダーを作成しますが、/admin/adminer.php. リファラー $_SERVER['HTTP_REFERRER'] には元の完全なリクエスト パスがあることに注意してhttp://example.com/slave/admin/adminer.phpください。したがって、解決策は場所を送り返すことです/slave/admin/adminer.php?username=user

簡単?さて、問題は、私のセットアップ/slave/では可変になるため、コードで解決する必要があることです。私はおそらくPHPのスポットでかなり簡単にそれを行うことができますが、私は疑問に思います.Nginxが提供するより簡単な代替手段は確かにありますか?

私はおそらく言及する必要があります

  • マスターとスレーブの両方で Ubuntu 14.04
  • Nginx 1.6.2 インストール バイアル apt-get nginx-extras (Lua モジュール対応フレーバー)
  • php5-fpm 5.5.9
  • マリアDB 10
  • 管理者 4.2.1
4

2 に答える 2