2016-12-24 18 views
1

私は標準のPHP/Apacheプラットフォーム上に既存のWebアプリケーションを持っています。さて、私が望むのは、チャット機能を追加することです、そして、それをwebsocket上でリアルタイムにしたいと思っています。それにnodejでsocket.ioを少し勉強しました。したがって、Apacheに大きなPHPアプリケーションを実行するだけでなく、socket.ioでnodejsにチャットを実行させることになります。websocketを介して既存のPHP Webアプリケーションにチャットを追加

しかし、私が実際に理解していないことは、nodejsチャットのコードで自分のユーザーをどのように認識するのでしょうか? Apacheとnodejは同じポートでは実行できません。つまり、ポート8080でチャットを実行します。この場合、ユーザーのCookieが失われてしまい、ログに記録するように要求する必要があります。チャットを使用したい場合は、このnodejs対応ポートでもう一度使用しますか?ばかげているように見えますが、私はそれについてどのような道を行くのか分かりません。

ノード全体に私のコード全体を移植することはできません。理想的には、Apacheとnodejを共存させたいと思っています。あるいは、私はチャットがウェブアプリでどのように動作するはずであるかについて完全に誤解しています。

ヒントありがとうございます。

+0

あなたが適切にサーバを設定することができますと仮定して、PHPでのWebSocketサーバーを実行することができます。 – Dai

+0

Nginxに切り替えた場合、同じURLで同じポート上で行うことができます。たとえば、 'exampe.com/chat'はnodejsシステムを指し、それ以外のものはPHPシステムを指します。 –

+0

下記の[私の答え](https://stackoverflow.com/questions/41316681/adding-chat-through-websocket-to-an-existing-php-web-app/41317209#41317209)は役に立ちましたか?コメントはありますか? – rsp

答えて

1

PHPを使用してApacheで実行することができます。ポート3001とノードアプリケーションをポート3002で使用し、nginxをリバースプロキシとして設定して、両方ともポート80で使用できるようにします(たとえば、/ディレクトリのPHPアプリケーションと/chatディレクトリのノードアプリケーション)。この:それは少し複雑ではなく、それだけだろうSSLで

server { 
    listen 80; 
    server_name example.com; 
    location /chat { 
     proxy_pass http://localhost:3002; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $host; 
    } 
    location/{ 
     proxy_pass http://localhost:3001; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $host; 
    } 
} 

server { 
    listen 443; 
    server_name example.com; 
    add_header Strict-Transport-Security "max-age=3600"; 
    ssl on; 
    ssl_certificate /.../chained2.pem; 
    ssl_certificate_key /.../domain.key; 
    ssl_session_timeout 5m; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA; 
    ssl_session_cache shared:SSL:50m; 
    ssl_prefer_server_ciphers on; 

    location /chat { 
     proxy_pass http://localhost:3002; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $host; 
    } 

    location/{ 
     proxy_pass http://localhost:3001; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_set_header Host $host; 
    } 

} 

あなたのPHPとノードのアプリケーションは、異なるサーバー上で実行することができます - ちょうどnginxの設定ファイルでそのアドレスを使用しています。

この回答や詳細は、そのコメントを参照してください:

+0

2台のマシンで2台のプロセスをgunicornで実行するための設定方法を教えてください。プライベートIPを使ってこれらのサービスにnginxを有効にし、メインのnginxの中で呼び出す必要がありますか? –

関連する問題