2017-11-15 3 views
0

node.js 응용 프로그램을 실행하는 데 사용하는 서버가 있습니다. 그 중 하나는 우리 사무실에서 사용하는 메시징 앱 (여유와 비슷한)입니다. 앱을 실행하면 앱이 http://0.0.0.0:8000/에 도달 할 수 있으므로 (서버 시스템 외부에서) 외부로 도달하려면 conf 파일에서 VirtualHost를 사용하여 포트 포워딩을 설정하십시오. Apache2.4.18을 사용하여 웹 서버를 실행합니다. ,
<VirtualHost *:80> ServerAdmin [email protected] ServerName messenger.mydomain.com ProxyPreserveHost On # setup the proxy <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass/http://0.0.0.0:8000/ ProxyPassReverse/http://0.0.0.0:8000/ </VirtualHost>동일한 IP 및 웹 소켓 오류가있는 하위 포트를 새 포트로 전달

연결이 성공적으로 작동하고, 그냥 벌금되는 NoSQL 데이터베이스 파일에 쓸 수 은 자세한 내용은 우분투 16.04 LTS

에 PM2를 사용하여 실행은이 같은 설정 파일을 설정 하지만 항목은 정말 많은 경험 리버스 프록시를 설정하고 WebSocket을 s의 취급이없는

WebSocket connection to 'ws://messenger.mydomain.com/' failed: Error during WebSocket handshake: Unexpected response code: 200

인해이 오류로되는 NoSQL 데이터베이스에서 읽어지고 것 같다 해달라고 o 광범위한 인터넷 검색을 한 후에 WebSocket을 작동시키는 데 필요한 것이 정확히 무엇인지 확신 할 수 없습니다. 나는 PHP와 clank에 대한 래칫 (ratchet)과 같은 것을 배우려고했지만 솔직히 나는 실망했다. 누구든지 어떤 방향을 제시 할 수 있습니까?

답변

0

해결했습니다.

내가이 명령 a2enmod rewrite PS 실행하는 데 필요한 : 확인을해야합니다 당신은 이미 그런 a2enmod proxy_wstunnel a2enmod proxy_http

a2enmod proxy를 실행 내 subdomain.mydomain.com.conf 파일에 추가 :

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

내 서버에서 로컬로 포트 8000을 사용하고 있었기 때문에.

이 문제가 해결되어 모든 항목을 올바르게로드 할 수 있습니다.

그래서 내 아파치/사이트-가능/subdomain.mydoamin.com.conf은 다음과 같습니다

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName subdomain.mydomain.com 

RewriteEngine on 
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] 
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC] 
RewriteRule .* ws://localhost:8000%{REQUEST_URI} [P] 
    # setup the proxy 
    <Proxy *> 
     Order allow,deny 
     Allow from all 
    </Proxy> 
    ProxyPass/http://0.0.0.0:8000/ 
    ProxyPassReverse/http://0.0.0.0:8000/ 
</VirtualHost> 

은 그 때 나는
service apache2 restart 모든 좋았다 달렸다.

관련 문제