こんにちは私はApache 2.2とfeathersjsを使用しているWebサイトで作業しています。 このウェブサイトにはDV SSLがあり、httpsを使用してサブドメインにアクセスすることはできません。設定apacheとnodejs socket.io
私のノードアプリケーションは3030ポートで動作しています。私は、このアドレスを使用してfeathersjsアプリにアクセスすることができます。
しかし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 "*"
を追加しましたが、問題があります。
私の設定に何が問題なのですか?
'ProxyPreserveHost On'を追加しようとしています –
' websocket.js:112 WebSocket接続が 'ws://mywebsite.com/socket.io/?EIO = 3&transport = websocket'に失敗しました:WebSocketハンドシェイク中にエラーが発生しました:レスポンスコード:301' – SNT