Linuxサーバーのポート8080で実行されるnode.jsサイトがあります。また、同じストレージデバイスのポート80で実行されているPHPサイト(bugzilla)もあります。現在、私の設定は次のとおりです。
- http://example.com:8080(node.jsアプリケーション)
- http://example.com/bugzilla(バグジラホームページ)
どちらのサイトも、次のようにポート80で実行したいと思います。
- http://example.com/mynodejs(node.jsアプリケーション)
- http://example.com/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をWebサーバーとして使用する場合は、プロキシモジュールを有効にする必要があります。 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
。