Apache ProxyPass から TP-Link ルーターへ

Apache ProxyPass から TP-Link ルーターへ

オフィスの外から 1 台以上のルーターにアクセスしなければならないことがあります。Web サイトからアクセスできれば非常に便利です。当社のサーバーは Windows 2008 サーバーで Apache を実行しています。いくつかのドメインにサービスを提供しているため、httpd-vhosts.conf ファイルに変更を加えました。

ProxyRequests Off  
ProxyPreserveHost On  

<Location "/router/">  
  ProxyPass        http://192.168.1.40/  
  ProxyPassReverse http://192.168.1.40/  
</Location>  

閲覧する場合http://www.ourdomain.com/router/ログイン ページは確かに表示されますが、いくつかの画像と (画像の) ログイン ボタンがありません。ログイン後、完全に「禁止」が表示されます。

ProxyPreserveHost ディレクティブが完全に無視されたようです。上記の変更に何か問題がありますか? 何か誤解していますか? ルーターのメインページが JavaScript を使用して構築されており、他の何かを設定する必要があるためでしょうか? ちなみに、ルーター自体にログインした後、URL は変更されません (http://192.168.1.40

外部から表示されるログイン ページ:

外部から見たログインページ

正しいログインページ:

正しいログインページ

外部からログインした後のルーターのメインページ:

外部からログイン後のルーターのメインページ

答え1

TP-Link Archer C2 もリファラをチェックし、ルーターの内部 IP と一致しない場合は 403 を返すと思います。これは、Web サイトがルーターからコンテンツを読み込むのを防ぐためのセキュリティ対策です。

リバース プロキシでヘッダーを手動で変更してみてください。

<Location "/router/">  
    ProxyPass        http://192.168.1.40/  
    ProxyPassReverse http://192.168.1.40/  

    Header add referer "http://192.168.1.40/"
    RequestHeader set referer "http://192.168.1.40/"
</Location>  

ルーターのファームウェアは通常は自動的にアップグレードされないため、設定により、Web 構成インターフェイスが外部ネットワークに公開され、セキュリティ上の問題が発生する可能性があることに注意してください。接続で TLS が既に有効になっているのは良いことですが、ルーターのログイン ページの前に、さらに認証レベルを追加することもできます。

関連情報