私が基本的に達成しようとしているのは、メインのWebサイトでGoで記述されたCMSを実行することです。これはwww.example.comにあります。
www.example.com/clients/などのディレクトリにPHPで記述されたアプリケーションもあります。
Go組み込みWebサーバーを使用してexample.comを提供しながら、Apache / PHPを使用してexample.com/clientsを提供するにはどうすればよいですか?
Apache2を介しmod_proxy
て、ローカルネットワーク内(サーバーがアクセスできる場合)を含め、ローカルホストまたはサーバーがアクセスできる他の場所のさまざまな宛先にさまざまなパスをプロキシできます。
このためには、以下の例のようにProxyPass
(ProxyPass用のApache2 Docs、非常に便利な読み物)を使用します。
<VirtualHost *:80>
ServerName some.example.host.xyz
DocumentRoot /var/www/your-document-root
Alias /clients/ /var/www/clients/
ProxyPass /clients/ !
ScriptAlias /something-using-cgi/ /var/www/cgi-stuff/
ProxyPass /something-using-cgi/ !
ProxyPreserveHost On
ProxyPass / http://localhost:9876/
ProxyPassReverse / http://localhost:9876/
ProxyPass /elsewhere/ http://elsewhere.example.host.xyz:1234/
ProxyPassReverse /elsewhere/ http://elsewhere.example.host.xyz:1234/
</VirtualHost>
外部ユーザーがリバースプロキシをフォワードプロキシとして使用できないように、プロキシセキュリティを設定する必要があります。ProxyRequests
公式のApache2ドキュメントで説明されているようにそれを行うことができます。私がサーバーでこれを行った方法は、これをサーバー全体の構成に入れることです(これが十分に安全であることを自分で確認する必要があります):
# disables forward proxy
ProxyRequests Off
Andrew Gerrandは、nginxについてこれについて優れたブログ投稿をしていますが、原則はApacheでも同じです。
Goアプリケーションに着信するリクエストのリバースプロキシとしてApacheを設定したいとします。Apacheの場合、 mod_proxyを確認します