{"id":519,"date":"2020-04-30T00:10:51","date_gmt":"2020-04-29T15:10:51","guid":{"rendered":"https:\/\/blog.enyou.net\/?p=519"},"modified":"2020-04-30T12:03:04","modified_gmt":"2020-04-30T03:03:04","slug":"vscode-server-reverse-proxy-%ec%84%a4%ec%a0%95","status":"publish","type":"post","link":"https:\/\/blog.enyou.net\/ko\/archives\/519","title":{"rendered":"vscode server reverse proxy \uc124\uc815"},"content":{"rendered":"\n<p>vscode server\ub97c \uc124\uce58\ud558\uace0 reverse proxy\ub97c \uc774\uc6a9\ud574\uc11c SSL\uc774 \uc801\uc6a9\ub41c \ub3c4\uba54\uc778\uc73c\ub85c \uc811\uadfc\ud558\ub824\uace0 \ud588\ub294\ub370, \uc798 \uc548 \ub410\ub2e4. \uc774\uc720\ub294 websocket \uc5f0\uacb0 \ub54c\ubb38\uc774\uc5c8\ub2e4.<\/p>\n\n\n\n<p>vscode\ub97c https \ubaa8\ub4dc\ub85c \ud65c\uc131\ud654\ud55c \ud6c4\uc5d0 \uacf5\uc778 \uc778\uc99d\uc11c\uac00 \uc544\ub2c8\uc5b4\ub3c4 \ud504\ub85d\uc2dc\uac00 \uc791\ub3d9\ud558\uac8c \ud558\ub294 \ubaa8\ub4c8(vscode\uc5d0\uc11c \uae30\ubcf8 \uc81c\uacf5\ud558\ub294 \uc778\uc99d\uc11c\uac00 \uacf5\uc778\uc778\uc99d\uc11c\uac00 \uc544\ub2c8\ubbc0\ub85c), \uadf8\ub9ac\uace0 websocket\uc744 rewrite\ud558\ub294 \ucf54\ub4dc\uc640 apache2\uc758 proxy_wstunnel\uc744 \ud65c\uc131\ud654\ud558\uba74 \uc798 \uc791\ub3d9\ud55c\ub2e4. \uc804\uccb4\uc801\uc73c\ub85c \uc544\ub798\uc640 \uac19\uc740 \uc124\uc815\uc744 \uc790\uc2e0\uc758 \uc124\uc815\uc5d0 \ud3ec\ud568\uc2dc\ud0a4\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;VirtualHost *:80>\n    \uc790\uc2e0\uc758 \uc124\uc815\n&lt;\/VirtualHost>\n&lt;VirtualHost *:443>\n    AllowEncodedSlashes on\n\n    SSLProxyCheckPeerCN off -> vscode \uc11c\ubc84\uc758 \ube44\uacf5\uc778 \uc778\uc99d\uc11c\ub97c \ud5c8\uc6a9\ud568\n    SSLProxyCheckPeerName off\n    ProxyPreserveHost on\n    SSLProxyEngine on -> SSL \ud1b5\uc2e0\uc744 Proxy \ud560 \uc218 \uc788\ub3c4\ub85d \ud55c\ub2e4.\n\n    RewriteEngine on\n\n    # rewrite websocket \uc6f9\uc18c\ucf13 \uc694\uccad \uc8fc\uc18c\ub97c \ubc1b\uc73c\uba74 \ub9c1\ud06c\ud574\uc900\ub2e4.\n    RewriteCond %{HTTP:Upgrade} =websocket &#91;NC]\n    RewriteRule \/(.*)           wss:\/\/(vscode server \uc8fc\uc18c, \uc77c\ubc18\uc801\uc73c\ub85c localhost:\ud3ec\ud2b8\ubc88\ud638)\/$1 &#91;P,L]\n\n    ProxyPass \"\/\" \"https:\/\/(vscode server \uc8fc\uc18c, \uc77c\ubc18\uc801\uc73c\ub85c localhost:\ud3ec\ud2b8\ubc88\ud638)\/\"\n    ProxyPassReverse \"\/\" \"https:\/\/(vscode server \uc8fc\uc18c, \uc77c\ubc18\uc801\uc73c\ub85c localhost:\ud3ec\ud2b8\ubc88\ud638)\/\" -> \ub9ac\ubc84\uc2a4 \ud504\ub85d\uc2dc \uc124\uc815\n\n    SSLEngine on\n\n    \uc790\uc2e0\uc758 \uc124\uc815\n&lt;\/VirtualHost><\/code><\/pre>\n\n\n\n<p>a2enmod\ub85c \ud504\ub85d\uc2dc \uad00\ub828 \ubaa8\ub4c8\uc778 proxy, proxy_http, proxy_wstunnel\uc744 \ud65c\uc131\ud654 \uc2dc\ud0a8 \ud6c4 apache2\ub97c \uc7ac\ub85c\ub4dc\ud558\uba74 \uc798 \uc791\ub3d9\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p>\ucc38\uace0 :<br>https:\/\/github.com\/cdr\/code-server\/issues\/282<\/p>\n","protected":false},"excerpt":{"rendered":"<p>vscode server\ub97c \uc124\uce58\ud558\uace0 reverse proxy\ub97c \uc774\uc6a9\ud574\uc11c SSL\uc774 \uc801\uc6a9\ub41c \ub3c4\uba54\uc778\uc73c\ub85c \uc811\uadfc\ud558\ub824\uace0 \ud588\ub294\ub370, \uc798 \uc548 \ub410\ub2e4. \uc774\uc720\ub294 websocket \uc5f0\uacb0 \ub54c\ubb38\uc774\uc5c8\ub2e4. vscode\ub97c https \ubaa8\ub4dc\ub85c \ud65c\uc131\ud654\ud55c \ud6c4\uc5d0 \uacf5\uc778 \uc778\uc99d\uc11c\uac00 \uc544\ub2c8\uc5b4\ub3c4 \ud504\ub85d\uc2dc\uac00 \uc791\ub3d9\ud558\uac8c \ud558\ub294 \ubaa8\ub4c8(vscode\uc5d0\uc11c \uae30\ubcf8 \uc81c\uacf5\ud558\ub294 \uc778\uc99d\uc11c\uac00 \uacf5\uc778\uc778\uc99d\uc11c\uac00 \uc544\ub2c8\ubbc0\ub85c), \uadf8\ub9ac\uace0 websocket\uc744 rewrite\ud558\ub294 \ucf54\ub4dc\uc640 apache2\uc758 proxy_wstunnel\uc744 \ud65c\uc131\ud654\ud558\uba74 \uc798 \uc791\ub3d9\ud55c\ub2e4. \uc804\uccb4\uc801\uc73c\ub85c \uc544\ub798\uc640 \uac19\uc740 \uc124\uc815\uc744 \uc790\uc2e0\uc758 \uc124\uc815\uc5d0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-519","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/519"}],"collection":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/comments?post=519"}],"version-history":[{"count":2,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/519\/revisions"}],"predecessor-version":[{"id":524,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/519\/revisions\/524"}],"wp:attachment":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/media?parent=519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/categories?post=519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/tags?post=519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}