0

しばらく探し回っていますが、自分のケースに対する適切な解決策が見つかりません。だからここに私の場合があります:

アプリケーションとプロキシとして使用される apache サーバーがある会社にサーバーをインストールしました。このサーバーは、ネットワーク (プライベート ネットワーク) に設置された一部の機器にアクセスできます。これらの機器には、(ホーム ルーターのような) 機器を構成できる Web サーバーが組み込まれています。したがって、私が望むのは、すべての着信要求を機器にプロキシできるようにすることです。これを処理したい方法は次のとおりです。

ユーザーはそのクエリを使用できます:

http://SERVER_IP:9090/10.219.1.1/

したがって、IP : 10.219.1.1 は、実際には、私がアクセスしたい機器の IP です。

これまでのところ、私がやったことは次のとおりです。

SetEnvIf Referer ".*(10\.219\.[0-9]{1,3}\.[0-9]{1,3}).*$" routeur_ip=$1
SetEnvIf Request_URI  ".*(10\.219\.[0-9]{1,3}\.[0-9]{1,3}).*$" routeur_ip=$1

RewriteRule ^\/10\.219\.[0-9]{1,3}\.[0-9]{1,3}\/$ http://%{ENV:routeur_ip}/ [P,L]
RewriteRule ^\/10\.219\.[0-9]{1,3}\.[0-9]{1,3}\/(.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(themes.*)$ http://%{ENV:routeur_ip}/$1?david=%{ENV:routeur_ip} [P,L]
RewriteRule ^\/(images.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(css.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(cgi-bin.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(js.*)$ http://%{ENV:routeur_ip}/$1 [P,L]
RewriteRule ^\/(favicon.ico)$  http://%{ENV:routeur_ip}/$1 [P,L]

ProxyPassReverse http://SERVER_IP:9090/%{ENV:routeur_ip}/ http://%{ENV:routeur_ip}/

結果 : HTML コードをロードできましたが、2 つのことが機能しません。

  1. 機器の CSS が画像を読み込もうとすると、400 が返されます
  2. HREF タグで返される URL に機器の IP アドレスが含まれていないため、機器のメニューを正しくナビゲートできません。例: HREF は次のよう<a href="/cgi-bin/webif/status-network.sh?cat=Network">Network</a>
    になります。これをクリックすると、次のようになりました。http://10.23.130.107:9090/cgi-bin/webif/status-network.sh?cat=Network したがって、リターン URL には機器の IP アドレスが含まれていません...

ログ:

GET MY_IP 200, /10.219.1.1/ | Req_URI:/10.219.1.1/, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 401, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /themes/active/waitbox.css | Req_URI:/themes/active/waitbox.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /themes/active/webif.css | Req_URI:/themes/active/webif.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /js/styleswitcher.js | Req_URI:/js/styleswitcher.js, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/ajax-loader.gif | Req_URI:/images/ajax-loader.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/hlogo.gif | Req_URI:/images/hlogo.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 404, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /js/styleswitcher.js | Req_URI:/js/styleswitcher.js, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /themes/active/waitbox.css | Req_URI:/themes/active/waitbox.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /themes/active/webif.css | Req_URI:/themes/active/webif.css, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 400, /themes/vip4g/menu-bg.gif | Req_URI:/themes/vip4g/menu-bg.gif, HTTP_REF:http://SERVER_IP:9090/themes/active/webif.css | ip = - vs - |-|-
GET MY_IP 400, /themes/vip4g/current-bg.gif | Req_URI:/themes/vip4g/current-bg.gif, HTTP_REF:http://SERVER_IP:9090/themes/active/webif.css | ip = - vs - |-|-
GET MY_IP 200, /images/ajax-loader.gif | Req_URI:/images/ajax-loader.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /images/hlogo.gif | Req_URI:/images/hlogo.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /10.219.1.1/cgi-bin/webif/system-info.sh | Req_URI:/10.219.1.1/cgi-bin/webif/system-info.sh, HTTP_REF: | ip = 10.219.1.1 vs - |-|-
GET MY_IP 200, /images/cell7.gif | Req_URI:/images/cell7.gif, HTTP_REF:http://SERVER_IP:9090/10.219.1.1/cgi-bin/webif/system-info.sh | ip = 10.219.1.1 vs - |-|-

別の解決策がありますが、好きではありません。機器の IP ごとにローカル ポート フォワーディング (IP テーブルを使用) を作成することもできますが、そのためにはサーバー上で多くのポートが必要になるため、正しい方法ではないと思います。

ヒントはThx。

よろしく

4

1 に答える 1

0

あなたが望むものは、管理が複雑なものです。ホストへのすべての参照を変更して、URL に IP プレフィックスを追加します。

デフォルトでは、プロキシ命令は HTTP ヘッダーのコンテンツ (302 など) のみを管理します。これはあなたがすでに持っているものです。

HTML/JS/CSS コンテンツを適切な URL で書き換えるには、次のソリューションが必要です。

  • mod_proxy_htmlまたはその他のツールを使用して、プロキシによって管理されるすべてのデータをスキャンし、それに置換ルールを適用します。もちろん、これはプロキシの速度低下を意味します。
  • アプリケーション側でプロキシ HTTP ヘッダー ( X-Forwarded-PortX-Forwarded-Protoおよび) を管理します。X-Forwarded-Hostこれらは値のリストであり、最初のものは HTML/CSS/Js コンテンツで使用されるべきものであることを知っています。ウィキペディアを引用すると、これはこれらのリストの一般的な形式です。

X-Forwarded-For: クライアント、proxy1、proxy2

2 番目の解決策は、アプリケーションに関する深い知識と能力が必要であることを意味し、通常はプロキシ上のコンテンツ リライタが使用されます。

アクションの別の方法は、リファラー ヘッダーまたは Cookie 値など、他の何かの IP プレフィックスを抽出することです。とにかく、構成には確かにいくつかのセキュリティ反射が必要です。最終的にプロキシを使用して、選択したIPアドレスでクエリを実行できるようにします。

于 2013-09-12T07:53:52.377 に答える