2017-11-03 8 views
0

こんにちは私はApache 2.2とfeathersjsを使用しているWebサイトで作業しています。 このウェブサイトにはDV SSLがあり、httpsを使用してサブドメインにアクセスすることはできません。設定apacheとnodejs socket.io

私のノードアプリケーションは3030ポートで動作しています。私は、このアドレスを使用してfeathersjsアプリにアクセスすることができます。

http://mywebsite.com:3030

しかしhttps://mywebsite.com:3030が動作していません。私はWebSocketのをfeathersjsに接続するhttps://mywebsite.com/socket/のような場所を使用する必要があります(:// localhostを:推測WS 3030)

ここでは、クライアント側のコードです:

const host = 'https://mywebsite.com/socket'; 
const socket = io(host,{ 
      transports: ['websocket'], 
      forceNew: true 
     }); 

私はhttpdの設定を必要としますhttpsでwsを接続します。 'https://mywebsie.com/socket.io/?EIO=3&transport=polling&t=L-1lgZ1' に 'http://mywebsite.com/socket.io/?EIO=3&transport=polling&t=L-1lgZ1' から リダイレクト:私はhttp://mywebsite.com/socketを使用してWebソケットを接続しようとした場合、それは

http://mywebsite.com/socket.io/?EIO=3&transport=polling&t=L-1lgZ1のロードに失敗しました

post_virtualhost_global.conf

<VirtualHost 185.173.106.42:80> 
    ServerName mywebsite.com 

    RewriteEngine on 
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] 
    RewriteRule .* ws://localhost:3030%{REQUEST_URI} [P] 

    ProxyPass /socket http://localhost:3030/ 
    ProxyPassReverse /socket http://localhost:3030/ 

    ProxyRequests off 

    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 

</VirtualHost> 

<VirtualHost 185.173.106.42:443> 
    ServerName freevery.com 

    RewriteEngine on 
    RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
    RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] 
    RewriteRule .* ws://localhost:3030%{REQUEST_URI} [P] 

    ProxyPass /socket http://localhost:3030/ 
    ProxyPassReverse /socket http://localhost:3030/ 

    ProxyRequests off 

    <Proxy *> 
     Order deny,allow 
     Allow from all 
    </Proxy> 

    <Location /feathers> 
     ProxyPass http://localhost:3030/ 
     ProxyPassReverse http://localhost:3030/ 
    </Location> 

</VirtualHost> 

を語ります はCORSポリシーでブロックされています:いいえ 'Access-Control-Allow-Ori gin ' ヘッダーが要求されたリソースに存在します。 Origin 'http://localhost:3001'はアクセスできません。

と私はhttps://mywebsite.com/socketを使用してWebソケットを接続しようとした場合、それは

https://mywebsite.com/socket.io/?EIO=3&transport=polling&t=L-1lUP5のロードに失敗しましたと言う:いいえ 「アクセス制御 - 許可 - 起源」ヘッダは、要求された たリソース上に存在しています。したがって、発信元 'http://localhost:3001'は許可されません。 応答にHTTPステータスコード404がありました。

私は.htaccessファイルにHeader set Access-Control-Allow-Origin "*"を追加しましたが、問題があります。

私の設定に何が問題なのですか?

+0

'ProxyPreserveHost On'を追加しようとしています –

+0

' websocket.js:112 WebSocket接続が 'ws://mywebsite.com/socket.io/?EIO = 3&transport = websocket'に失敗しました:WebSocketハンドシェイク中にエラーが発生しました:レスポンスコード:301' – SNT

答えて

0

問題を解決しました。 Apacheはnginxと衝突し、301エラーが発生しました。だから私はプロキシWebSocketにnginxを使用し、それは問題なくサブドメインで動作しています。

関連する問題