example.com
に1台のサーバーがあり、example.com:10001
に別のサーバーがあります。
ユーザーがexample.com:10001
に到達しようとすると、最終的にexample.com:10001/index.php/login
に到達しますが、そうあるべきです。
10001
ポートを非表示にしてexample.com/index.php/login
のように見えるようにする書き換えルールはありますか?
このコメントの詳細は、example.com A
がパブリックIPをポイントしており、サーバーがNATの背後にあり、2つのサーバーへのポート転送があることを示しています。
問題は、ポート
10001
を使用するサイトが別のサーバーによってホストされていることです。example.com
は172.31.1.10
であり、example.com:10001
は172.31.1.11
です。
あなたが持つことができます
172.31.1.10:80
でのリバースプロキシ、クエリを172.31.1.11:10001
にプロキシします。サーバーはApache 2.4であるため、正しいドキュメントは Apache Module mod_proxy です。
外部example.com:80
をリッスンし、172.31.1.10:80
と172.31.1.11:10001
の両方にリバースプロキシを使用する新しいプロキシサーバーNginxはこれに対する効率的な代替手段です。ドキュメント: NGINXリバースプロキシ 。
どちらの場合も、リバースプロキシはサブフォルダーまたはサブドメインとして構成する必要があります。
短い答えはノーです。ブラウザは、ユーザーからポートを隠しているものです。 httpを使用すると自動的にポート80を想定し、httpsを使用するとポート443を想定して、これらのポートをユーザーから隠します。非標準ポートを使用すると、ほとんどのブラウザはポートをアドレスの一部として表示します。
ただし、問題を正しく理解している場合は、同じIPで複数のサイトをホストする方法がいくつかあります。別のポートを使用する代わりに、サブドメイン(myothersite.example.com)を使用するか、example.com/mysite2などのexample.comの下のパスを使用できます。
私があなたの質問を理解した場合、mod_rewriteの[P]フラグを使用してこれを達成できます。
RewriteRule "/(.*)" http://example.com":10001/$1" [P]
追加の考慮事項があり、おそらくmod_proxyを直接使用する必要があります。