私の Linux サーバーのポート 8080 で node.js サイトが稼働しています。また、同じサーバーで、ポート 80 で PHP サイト (bugzilla) が稼働しています。現在の構成は次のとおりです。
- http://example.com:8080(node.js アプリケーション)
- http://example.com/bugzilla(Bugzilla サイト)
両方のサイトを次のようにポート 80 で実行します。
- http://example.com/mynodejs(node.js アプリケーション)
- http://example.com/bugzilla(Bugzilla サイト)
それは可能ですか?
答え1
まず、マシン上の両方のサービスを無効にします。次に、ポートを通常とは異なるものに変更して再起動します。例:
PHPアプリケーション
6821
NodeJSアプリケーション
6822
必ず で開いてください127.0.0.1
。ネットワーク インターフェイスで開かないでください。
nginx
最もよく使用される としてインストールしますReverse Proxy
。ディストリビューションに応じて、次のいずれかのコマンドでインストールできます。
Debian ベースのディストリビューションの場合:
$ sudo apt install nginx
Arch ベースのディストリビューションの場合:
$ sudo pacman -S nginx
nginx.conf
完全にディストリビューションに依存しますが、このパッケージには独自のファイル階層がある可能性があります。そのため、メインの設定ファイルとして提供します。元の設定ファイルを任意の名前でコピーすることを忘れないでください。 nginx.conf.origin
$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.origin
次に、 を開き/etc/nginx/nginx.conf
、既存の設定を削除して、その中に次の設定をコピーします。
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
keepalive_timeout 15;
server {
listen 80 default_server;
server_name example.com;
location /mynodejs {
proxy_pass http://127.0.0.1:6822;
}
location /bugzilla {
proxy_pass http://127.0.0.1:6821;
}
}
}
注意: この設定ファイルは私が自分の考えで書いたものですので、nginx を実行しようとするとエラーが発生する可能性が高いことをご承知おきください。その場合は、ここにコメントを書いてください。テストしてみます。
さて、nginx を再起動するだけです! 必要なものが得られます。
答え2
PHP アプリは変更されずにそのまま残すことができます。
Apacheをウェブサーバーとして使用する場合は、プロキシモジュールを有効にする必要があります。たとえばUbuntuの場合
a2enmod proxy
a2enmod proxy_http
ProxyPass
そして、および の行を使用して仮想ホストを変更しますProxyPassReverse
。
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/www.example.com/htdocs"
#nodejs app
ProxyPass /mynodejs http://127.0.0.1:8080/
ProxyPassReverse /mynodejs http://127.0.0.1:8080/
<Directory "/var/www/www.example.com/htdocs">
Options -Indexes +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/error_log"
CustomLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/access_log" combined
</VirtualHost>
Apacheを再起動します/etc/init.d/apache2 restart
。