問題:異なるドメインの同じサーバーでノードアプリケーションとphpアプリケーションをホストする必要があります。
example.comは通常どおりポート80を使用する必要がありますが、node-example.comはポート3000にルーティングする必要があります。
ポート80から3000へのすべてのトラフィックのルーティングは、mod_proxyを使用して正常に機能します。
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName node-example.com
ServerAlias www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
ただし、これにより、example.comとnode-example.comの両方がlocalhost:3000を指し、Node-appが実行されます。
Example.comがポート80を指すようにする方法はありますか?
Example.com/old-adminがポート80を指すことも問題ありません。
2つの<VirtualHost *:80>
タグを作成するだけです
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:80/
ProxyPassReverse http://localhost:80/
</Location>
</VirtualHost>
それはそのように動作するはずです;)
または、localhost:80
アプリがノードではない場合、そのターゲットの<Proxy *>
および<Location />
タグを削除し、DocumentRoot /var/www/node-example.com
-index.htmlへの静的パスに置き換えることができます
2つのドメインに対して2つの異なる仮想ホストconfファイルを作成することをお勧めします。これにより、スケーリングが異なる場合に別のサーバーに移動するだけでなく、それらを個別に構成できます。
デフォルトのインストール場所のApache2の場合、
/etc/Apache2/sites-available/www.example1.com.confにファイルを作成します
<VirtualHost *:80>
ServerName www.example1.com
ServerAdmin [email protected]
<Directory /home/example1/api/admin/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
<Directory /home/example1/api/mobile/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /api/ "http://localhost:30007/"
ProxyPassReverse / "http://localhost:30007/"
ErrorLog ${Apache_LOG_DIR}/example1/example1.log
CustomLog ${Apache_LOG_DIR}/example1/example1.log combined
</VirtualHost>
別のファイルを作成するwww.example2.com.conf
in sites-available
そして、example1をexample2に置き換えて上記の構成をコピーします。
サブドメインの場合、ファイル名と内部構成のwww
をサブドメインに置き換えます(例:api
)。
Confファイルを作成したら、コマンドで有効にする必要があります
a2ensite www.example1.com.conf
そして、コマンドでApache2をリロードします
Sudo systemctl reload Apache2
ディレクトリがあることを確認してくださいexample1
およびexample2
Apacheをリロードする前に作成されたApache_LOG_DIRに作成されます。
それでおしまい。ドメインレジストラーまたはCDNのサーバーIPアドレスを使用して、ドメインのAレコードを構成します。使用しているものは何でも使用できます。