ProxyPass:ディレクトリURLを非標準ポートにリダイレクトします


13

私はGoogleを検索してきましたが、答えを見つけるのにあまり成功していません。Ubuntuでサーバーを実行していますが、さまざまな非標準ポートを使用するプログラムがインストールされています。それぞれが異なるポートを使用します。私の場合は9090、9091、9092、9093、9094です。Apacheサーバーをセットアップし、IPアドレスを入力する代わりにサーバーにアクセスできるドメイン名を持っています。私が探しているのは、リストしたさまざまなポートを指すことができるディレクトリを作成する方法です。私のようなものが欲しい:

https://www.mydomain.com/app1
https://www.mydomain.com/app2
http://www.mydomain.com/app3

一部のポートはSSLを介しており、一部はそうではありません。使いやすいように、順番に並べています(9090-9094)。/ app1がSSLポート9090を指すようにし、/ app2がSSLポート9091を指すようにし、/ app3が非SSLポート9092を指すようにします。それを行う簡単な方法はありますか?他の投稿に基づいてProxyPassなどを追加しようとしましたが、何も機能しませんでした。新しいサイトを追加する必要がありますか?

また、これにファイルの編集が含まれる場合は、ファイルのデフォルトの場所と追加する場所をリストできれば幸いです。ProxyPassを追加するように言っている投稿を見続けたので、VirtualHostの内部にあると仮定しましたが、完全にはわかりませんでした。基本的に、私はWebサーバーのセットアップについてほとんど知らないので、そのように扱われる必要があります。

間違ったタグはおaび申し上げます。投稿を読むのに時間を割いてくださり、ご協力いただければ幸いです。

編集:明確にするために、アプリケーションはすでにからアクセスできます。これらのアプリケーションによって公開された同じ場所/ページにアクセスするhttps://www.mydomain.com:9090ための方法が欲しいのhttps://www.mydomain.com/appNameです。

編集2:/ etc / apache2 / sites-available / defaultから

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /app1 https://localhost:9090/
    ProxyPassReverse /app1 https://localhost:9090/
</VirtualHost>

これを設定するために使用した構成ディレクティブの出力を投稿できますか?仮想ホスト内にいる場合、仮想ホスト全体を投稿できますか?
マルコスベラスケス

何を設定しますか?ポート?ポートはすべて、それぞれのプログラムのUIを介して設定され、サーバー上の各アプリケーションにアクセスするときにポートを入力する必要がないようにする方法を探しています。アプリケーションを掘り下げて見つけられるものを確認できますが、ポートは通常config.iniファイルに保存されているだけです
-Serneum

いいえ、そうではありません。ProxyPassなどを使用している場合、vhost内にProxyPassを配置する必要があります。もしそうなら、可能であれば仮想ホストのコンテンツ全体を投稿できますか?すなわち <VirtualHost 10.0.0.1:80 > ServerName server.domain.com DocumentRoot /usr/local/apache/htdocs </VirtualHost>
マルコスベラスケス

私は、助けを求める前にきれいな状態を得るために、ほとんどの変更を元に戻しました。持っている/ etc / apache2 / sites-available / defaultファイルを追加し、他のさまざまなサイト/検索で見たものに基づいて最後にプロキシを追加しました
-Serneum

回答:


13

次のApacheモジュールがインストールされ、ロードされていることを確認してください。

mod_proxy
mod_proxy_http
mod_ssl

rootとして次のコマンドを実行して確認できます(httpdが$ PATHにあると仮定)

httpd -t -D DUMP_MODULES

その後、構成を次のように変更してみてください。

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Proxy>
SSLProxyEngine on
ProxyPass /app1 https://localhost:9090
ProxyPassReverse /app1 https://localhost:9090

これで、mydomain.comにアクセスするhttp://localhost/app1か、またはhttp://mydomain.com/app1localhostを指していると想定した場合に、プロキシが機能するはずです。


以前と同じ問題、mod_proxyのインストール方法がわかりません。a2enmodmod_proxyはmod_proxyが存在しないと言っています。私は物事を機能させるために、これらの3つのMODを取得する方法を探し続けます。そうは言っても、現在プロキシ、proxy_http、sslを実行しています。それらが私が必要なものである場合、このソリューションはまだ機能していないようです。「127.0.0.1から許可」に関連していると思われるForbiddenメッセージを受け取りますが、完全には
わかり

サイドノート、mydomain.comはローカルホストではなく外部IPを指します。localhost:9090をip:9090に変更しようとしましたが、成功しませんでした。ProxyPassの横にある「許可元」と「ローカルホスト」は、サーバーに対して、またはアクセスしようとしているものに対して相対的ですか?
-Serneum

一時的にすべてから許可することで動作します。欠点は、CSSなどがページに表示されないことですが、それは完全に別の問題であり、自分で調べます。ありがとう。
-Serneum

どの構成ファイルに追加する必要がありProxyRequests Off <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 </Proxy> SSLProxyEngine on ProxyPass /app1 https://localhost:9090 ProxyPassReverse /app1 https://localhost:9090ますか?
キルテック

表示されないページアセットは、別の問題ではない可能性があります。ここのProxyPassディレクティブは、ドキュメント(app1)のみに適用されます。app1ディレクトリとそのすべてのコンテンツをプロキシするには、末尾にスラッシュを追加します。ProxyPass /app1/ https://localhost:9090/ProxyPassReverseを使用する場合も同じです。次に、RewriteRuleリダイレクトを追加します。/app1はRewriteRule ^/app1$ /app1/ [R]プロキシされないためです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.