web-dev-qa-db-ja.com

サブサーバーを同じサーバーの別のポートにリダイレクトするにはどうすればよいですか?

同じサーバー上の特定のポートにリダイレクトしたいサブドメインがいくつかあります。私が持っていると言います

dev.mydomain.com 

dev.mydomain.comからmydomain.com:8080に透過的にリダイレクトし、元のサブドメイン名とブラウザのURLを保持したい。

Apache 2.2でこれを行うにはどうすればよいですか?デフォルトポート80でApache 2.2を実行しています。これを実現するための書き込み構成を理解できません。

DNSでdev.mydomain.comに解決するようにmydomain.comを設定しました。

これは、ルーティング不可能なIPアドレスを持つイントラネット開発サーバー用なので、公開されているサーバーを危険にさらす悪用やセキュリティについてはそれほど心配していません。

73
user35861

解決

これが、マイルスエリクソンによって正しい方向に設定された後、私が最終的に思いついたものです。リダイレクトされたサーバーとポートではなく、リクエストの元のサブドメイン/ドメインをアドレスバーに反映させたいのですが、VirtualHostを使用してGoogleへの正しい解決策を提示し、最終的に次のような解決策を見つけましたmod_proxyの使用が含まれています。

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>
73
user35861

Dev.mydomain.comをmydomain.comのIPに解決できると想定すると、httpd.confに以下を追加できます。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

関連するApacheドキュメント:

  1. 名前ベースの仮想ホストの作成ガイド
  2. CoreVirtualHost および NameVirtualHost を含む
  3. リダイレクト

関連質問: ホスト名に基づくApacheリダイレクト

(注:この回答の元のバージョンでは、RedirectMatchの使用が誤って示唆されていました。@ ChrisSが指摘したように、URLのドメイン部分を解析できません。)

10
Skyhawk

端末で次の行を実行します(ドメインとサブドメイン名を正しく指定してください)

Sudo nano /etc/Apache2/sites-available/subdomain.example.com.conf 

次のコードを貼り付け、必要に応じて変更します

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

端末で次の行を実行します(ドメインとサブドメイン名を正しく指定してください)

Sudo a2enmod proxy
Sudo a2enmod proxy_http
Sudo a2ensite subdomain.example.com.conf
Sudo service Apache2 restart
7
M.A.K. Ripon

メインのvhost構成に次の行を追加します。

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

これにはApacheでmod_proxyが必要であることに注意してください。

5

あなたはmod_rewriteを探しています。 これはApacheのドキュメントへのリンクですbasic および advanced 構成の多くの例が含まれています。

また、ドキュメントを自分で解釈できない場合は、httpd.confに追加してみてください。

RewriteEngine on
RewriteCond %{HTTP_Host} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

そして、それが明確な例でない場合は、ここに mod_rewrite初心者ガイドへのリンク もあります。

4
Chris S