반응형

에버노트 개인 서비스 등급이 2018년 4월 경 기존 베이직(무료) - 플러스(월 3000원) - 프리미엄(월 6000원) 등급에서 베이직(무료) - 프리미엄(월 6000원)으로 플러스가 폐지가 되었습니다.  플러스 등급만으로도 충분히 사용할 수 있었는데 선택지가 프리미엄밖에 업게 되니 부담스럽더라고요.

 

그래서 우회 결제로 에버노트를 한달에 약 550원 정도로 저렴하게 사용할 수 있는 방법을 소개합니다.

필요 프로그램은 구글 크롬 + Hola VPN 확장프로그램이 필요합니다.

에버노트 우회 결제 방법

국가 우회를 하기 위해 구글 크롬 확장프로그램인 Hola VPN 을 설치하기 위해 크롬 웹 스토어에 접속합니다.

https://chrome.google.com/webstore/category/extensions?hl=ko

 

검색창에 hola vpn을 검색하여 Chrome에 추가를 클릭하여 설치합니다.

 

 

vpn 국가를 아르헨티나를 선택하여 적용합니다.

그 다음, 에버노트 결제 링크로 이동하여 결제할 계정으로 로그인을 합니다.

https://www.evernote.com/subscriptions

 

 

 

프리미엄 기준 ARS 18.33/월으로 2019년 1월 12일 기준 약 555원입니다. 

프리미엄으로 업그레이드를 클릭하여 진행합니다.

 

 

 

이제 결제 정보를 입력한 후 진행하면 끝입니다.

원래 가격보다 1/9 정도로 구매가 가능하니 정말 저렴하게 사용가능합니다.

국가/지역은 대한민국으로 선택하여 결제해도 상관없습니다.

 

 

 

결제 완료 !

1년 단위 결제하여 ARS 220으로 하였습니다. 약 6600원



출처: https://jun7222.tistory.com/490 [leverage 블로그]

반응형
반응형

유튜브 프리미엄을 저렴한 가격에 이용할 수 있는 방법이 있어서 알려드리려고 합니다.

 

VPN 서비스를 통해 인도로 우회해서 결제하는 방법인데요,

 

이 방법을 이용하면 매월 ₹129(129루피)로 이용할 수 있는데, 네이버에서 검색해 보니 원화로 약 2,200원 정도입니다.

 

 

물론, 결제 후 돈이 빠져나갈 때는 해외 결제 수수료 등 각종 수수료가 붙어서 좀 더 빠져나가겠지만.. 어쨌든 3,000원 내로 이용할 수 있습니다.

 

참고로, 좀 더 싸게 이용하고 싶으신 분들은 개인 말고 가족 멤버십으로 결제하면 189루피에 본인 포함 총 6명까지 이용가능합니다.

 

5명 추가로 모집하시면.. 189/6 = 31.5루피, 원화로 약 538원 정도니 훨씬 저렴하게 이용할 수 있습니다.

 

또한 한 아이디를 공유하는 방식이 아니라, 결제한 아이디에서 상대방 구글 계정을 추가하는 방식이라 간단합니다.

 

다만.. 저는 사람 모집하는 게 귀찮기도 하고.. 월 2,200원 정도면 만족해서

 

한 달 무료 체험도 할 겸 그냥 개인 멤버십으로 결제했습니다.

 

 

그럼 방법에 대해서 알려드리겠습니다. 

 

스마트폰으로 하는 방법도 있는데, 저는 편의상 PC로 진행했습니다.


먼저 준비물은 크게 3가지입니다. 

 

1. Chrome 브라우저
2. VPN 우회 앱
3. 해외 결제 가능한 카드 (VISA나 MASTER)

 

요렇게만 있으면 바로 하실 수 있습니다. (복잡해 보여도 정말 간단합니다...!)

 

귀찮으신 분들은 맨 아래로 내려가면 요약해 놨으니, 요약만 보고 따라가시면 됩니다.

 

1. VPN 우회 앱 설치 - Chrome Webstore


먼저 크롬 웹스토어에서 VPN 우회 앱을 설치해야 합니다.

 

구글에서 '크롬 웹스토어'를 검색하신 뒤 접속해주세요!

 

북마크 탭 켜놓으신 분들은 크롬을 켜시면 좌측 상단에 이렇게 '앱'이 있는데 이걸 누르신 뒤에 '웹 스토어'를 누르셔도 됩니다.

 

 

무튼 접속하신 뒤에 'uVPN'을 검색합니다.

 

(다양한 VPN 우회 앱들이 있지만, 저는 'uVPN'을 이용했습니다. 이미 VPN 앱이 깔려 있거나, 다른 앱을 이용하고 싶으신 분들은 다른 앱을 쓰셔도 됩니다.)

 

이어서 'uVPN'을 크롬에 추가해줍니다.

 

2. uVPN 가입 및 VPN 인도 설정

추가하면 위에 아이콘이 하나 추가되는데, 해당 아이콘을 클릭해주세요!

클릭하면 아래와 같은 창이 나타나는데, 서비스를 이용하려면 간단한 가입 절차가 필요합니다.

 

 

Join에 들어가서 이메일 / 패스워드 / 이름을 입력하면 이렇게 가입 인증 메일이 옵니다.

 

메일에 들어가서 인증해주세요!

 

인증 뒤에 로그인하면 아래와 같은 화면이 나타나는데, 'Select Location'에 들어가서 인도(India)를 선택합니다.

 

인도 선택 뒤 잠시 기다리면 'Connect Location'에 인도가 나타납니다.

 

이제 유튜브로 들어가 줍니다.

 

3. 유튜브 프리미엄 결제

VPN을 인도로 설정한 뒤에 유튜브로 접속합니다.

 

VPN은 결제가 끝날 때까지 유지해주셔야 합니다.

(우회 서비스다 보니, 속도가 좀 느릴 수 있습니다.)

 

유튜브에 접속하시면 아래와 같이 좌측 위에 'Youtube IN'이라고 나올 겁니다. 'IN'이 뜨셨다면 성공하셨다고 보면 됩니다.

 

여기가 KR로 뜬다면 위로 올라가셔서 VPN이 제대로 설정되었는지 확인해주세요!

 

 

다만!! 평소에 유튜브 이용하시면서 지역 설정을 하신 분들은 IN으로 안 뜨고 KR이나, 설정해 놓은 국가로 뜰 수 있습니다.

 

혹시 IN이 아니라 KR, 혹은 다른 국가로 표시되어도 꼭!! 유료 멤버십 결제에 들어가셔서 결제 금액이 '₹129'인지 확인해주세요!

 

 

로그인하신 뒤에, 우측 상단에 내 아이디를 눌러 '유료 멤버십 결제'에 들어가 줍니다.

 

'Youtube Premium' 하단에 자세히 알아보기 눌러줍니다.

 

가격이 '₹129/월'이 맞는지 확인하고, '무료 체험하기'를 눌러줍니다.

 

이미 한 달 무료 체험을 이용하신 분들의 경우에는 아마 저기가 결제하기? 이런 식으로 뜰 겁니다.

 

(혹시 가족 멤버십을 이용하실 분들은 하단에 파란색 글씨로 되어 있는 '가족 요금제나 학생 요금제' 부분을 클릭하신 뒤 결제를 진행하시면 됩니다.)

 

결제에 들어오면 이렇게 결제창이 뜹니다.

해외 결제가 가능한 카드 정보를 입력해주시면, 우측 사진과 같이 주소 입력 창이 나오는데,

 

여기에는 인도 주소를 입력해주셔야 합니다. (한국 주소를 넣어도 되는지는 확인을 못해봤네요.)

 

창을 하나 열고 '구글 지도'로 이동합니다.

 

인도 아무 도시나 검색해서 확대해 보면 건물이 나오는데, 건물을 찍으면 좌측에 주소가 나옵니다.

 

(저는 제일 만만한 뭄바이(Mumbai)를 검색했습니다.)

 

 

해당 주소를 복사해 줍니다.

 

그다음 다시 결제 창으로 돌아와 복사한 주소를 입력하면 끝입니다.

 

(저 같은 경우는 그냥 주소창에 붙여 넣고, 필요한 부분만 복사, 붙여 넣기 했습니다!)

 

 

결제를 하면 정상카드인지 확인하기 위하여 1루피가 결제됩니다.

 

카드 확인용이라 금방 취소되니 걱정 안 하셔도 됩니다.

 

무튼 이렇게 결제까지 완료하셨으면 이제 VPN은 끄셔도 됩니다.

 

평소에 유튜브 이용할 때는 그냥 이용하면 되니까 VPN 필요 없으신 분들은 과감히 삭제해주세요!

 

VPN을 끄고 유튜브에 접속해보면 이렇게 프리미엄으로 바뀌어 있습니다 ㅎㅎ

 

 

2,200원보다 좀 더 저렴하게 이용하고 싶으신 분들은 가족 멤버십으로 가입하신 뒤에, 5명 모집해서 돈 받으시면 됩니다~

 

결제한 계정을 돌려 쓰는 게 아니라, 결제한 계정에서 다른 5명의 구글 계정을 추가하는 방식이라 생각보다 간단합니다.

 

 

이외에 기타 궁금하신 부분이나, 잘 안 되는 부분 있으면 댓글 남겨주세요.

 

확인하는 대로 최대한 자세히 설명해드리겠습니다.

 

광고보다도.. 백그라운드 재생 기능이 정말 편하네요 ㅎㅎㅎ

 

감사합니다!

 


*** 요  약 ***

1. 크롬 웹스토어에서 VPN 앱 다운

(저는 'uVPN'을 이용했습니다.)

 

2. VPN 어플 실행해서 국가를 '인도(India)'로 설정

 

3. Youtube 접속

 

4. 유료 멤버십 결제 들어가서 'Youtube Premium' 결제 (해외 결제)

('129루피'인지 확인하시고, 주소에는 인도 주소를 넣어 주세요!)



출처: https://stanlee.tistory.com/77 [아트센터를 꿈꾸는 청년의 성장 스토리-]

반응형
반응형

아래와 같이 git command 를 실행하자

 

git rm -r --cached .

git add .

git commit -m "fixed untracked files"

반응형
반응형

Mac Xampp 에서 위와 같은 오류 발생시, 아래와 같이 터미널에서 실행한후, 앱을 완전히 종료 후 재시작하면 stackman 이 재구성된다.

계정 명/폴더 변경시에 발생하는것 같다.

 

rm -rf ~/.bitnami/stackman

반응형
반응형

nmssgt.ssd

 

요기 설치 설명이 넘 잘되있어요..ㅎㅎ
일단 여기 설치법 대로 설치해주세요!!

nmssgt.ssd 파일은 제 블로그에서 받은걸로 하세요.^^ (필 다른걸로 하면 실행 안되요!!) 

 
다음 조기 따라하시고
마지막!!
권한 설정은
Owner 모두 체크해주시고
Group 와 Others 는 R과 S만 체크

이제 실행!!

반응형
반응형

이번에 친구랑 일본을 가게되서 포스팅..

다음에 갈일 또 있을때 참고하기 위해서~

 

URL : http://www.seoulbus.co.kr/index/airportbus_01_1.php?val=10 

 

2016.07.15 기준

 

 

반응형
반응형

Websocket

1.1. HTTP의 단점

HTTP 프로토콜의 가장 큰 장점중 하나는 "견고하면서도 간단하다"는 점이다. 프로토콜은 인간이 쉽게 이해할 수 있는 영문 알파벳으로 이루어지며, 필수 헤더 10개 정도면 애플리케이션의 제작이 가능하다. 게다가 인터넷 역사상 가장 성공적인 프로토콜이기도 하다. 즉시 사용할 수 있는 엄청난 수의 서버/클라이언트 애플리케이션들과 역시 엄청난 수의 (게다가 품질도 뛰어난)라이브러리들을 가지고 있다.

 

HTTP는 연결을 유지하지 않는 특성으로 효율에 문제를 가지고 있다. HTTP는 하나의 요청을 보내면, 응답을 받고 연결을 끊는 식으로 작동한다. 10번의 요청을 보내려면, 10번 연결을 맺고 끊는 과정을 거쳐야 한다. 게다가 모든 요청에 헤더파일이 중복해서 들어간다. 비효율적일 수 밖에 없다 [1] .

 

또 다른 문제는 "실시간 상호작용 성"이 떨어진다는 점이다. 예컨데, HTTP를 기반으로 채팅서버를 구현하려면 응답을 기다릴 수 없기 때문에 애로사항이 꽃핀다. Polling, Long Polling등과 같은 방법들을 이용해야 하는데, 효율적이지도 않고 깔끔하지도 않은 억지 구현이다.

 

1.2. Websocket 개요

웹소켓은 full-duplex 통신 [2] 을 지원한다. 일반 소켓 통신과 다른 점이라면 bytes 스트림을 사용하지 않고 오로지 UTF8 포멧의 메시지 스트림만 허용 한다는 점이다.

 

웹 소켓이 나오기전에는 Comet 채널을 이용해서 full-duplex 통신을 구현했지만, TCP 연결과정(Threeway handshake)에서의 오버헤드와 HTTP 오버헤드 때문에 비효율적이었다. 웹소켓은 HTTP를 기반으로 하면서도 HTTP의 문제점을 해결하는 것을 목표로 하고 있다.

 

1.3. 브라우저 지원

웹소켓은 2011년 RFC 6455에 의해서 표준화 됐으며, 웹소켓 API들은 W3C에 의해서 표준으로 채택됐다. 이후 브라우저들에서 지원하기 시작했다. 지금은 PC 브라우저들 뿐만 아니라 모바일 브라우저에서도 지원하고 있다.

 

 Websocket 브라우저 지원

 

출처 : http://caniuse.com

 

거의 모든 브라우저들이 웹 소켓을 지원하고 있다. IE도 11부터 지원을 하고 있고, 마소의 새로운 웹 브라우저인 Edge 역시 당연히 웹 소켓을 지원한다. 다만 이러 저러한 이유로 IE 10이하의 버전을 사용하는 대한민국에서는 애로사항이 꽃필 수 있는 상황이다.

 

1.4. 웹소켓 프로토콜

웹소켓은 HTTP를 기반으로 하지만 HTTP 프로토콜과는 전혀 다른 프로토콜이다. HTTP를 기반으로 한다는 것의 의미는 웹소켓 연결을 맺는 과정에 HTTP가 개입한다는 의미다. Handshake 과정이 성공적으로 끝나면, HTTP를 웹소켓 프로토콜로 바꾸는 protocol switching과정을 진행한다. 이 과정이 끝나면 HTTP 대신 wswss프로토콜이흐르게 된다.

  • ws : 일반적인 웹소켓
  • wss : 데이터 보안을 위해서 SSL을 적용한 프로토콜. ws가 HTTP라면 wss는 HTTPS에 대응한다고 보면 된다.

웹소켓을 호출할 때는 "ws://"를 사용한다. 예를 들자면 "ws://localhost/chat"와 같이 사용한다.

 

웹소켓 통신에 사용하는 데이터는 UTF8인코딩을 따르며, 0x00과 0xff 사이에 데이터를 실어보낸다.

1.4.1. 웹소켓 Handshake 과정

웹소켓 Handshake 과정, 즉 웹소켓을 초기화하기 위한 과정이다. 아래 그림은 웹소켓 handshake가 이루어지는 과정을 보여준다.

 

 ws 핸드쉐이크 과정

 

HTTP로 웹소켓을 사용할 수 있는지 서버에게 묻는다.

1
2
3
4
5
6
7
8
GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HTTP기반의 연결을 websocket 기반으로 upgrade하겠다고 요청한다.

 

웹소켓을 지원하는 웹서버의 응답이다.

1
2
3
4
5
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HTTP를 websocket으로 switching 하겠다고 응답한다. 새로운 웹소켓이 만들어지고, 웹소켓 프로토콜을 이용해서 데이터 통신을 하다.

 

1.5. 웹소켓과 HTTP Comet

웹소켓개발 이전에도 HTTP를 이용해서 서버측과 실시간으로 데이터를 주고바아야 하는 요구는 계속 있어왔다. 그래서 임기응변식으로 만든 기술이 HTTP Comet다. Comet는 특정기술에 대한 이름은 아니고 HTTP상에서 데이터를 push를 하기 위한 방식자체를 일컫는 기술 모두를 일컫는다.

 

Comet구현을 위해서 일반적으로 사용하는 방식은 Long PollingStreaming이다.

 

1.5.1. LongPolling vs websocket

Long Polling는 이름에서 처럼 데이터가 있는지 주기적으로 Polling을 하돼, polling할 데이터가 있을 때까지 오랫동안 기다리는 방식으로 네트워크 자원을 효율적으로 사용하는 기술이다.

 

  1. 웹서버로 HTTP 요청을 보낸다.
  2. 요청을 받은 웹서버는 데이터가 있을 때까지(혹은 이벤트가 발생할 때까지) 기다린다.
  3. 데이터가 있으면 HTTP 응답을 한다.
  4. 응답을 받은 웹브라우저는 데이터를 출력하고 HTTP 연결을 끊는다.
  5. 다시 HTTP 요청을 보낸다.
  6. 기다린다.
  7. 계속 반복한다.

일정시간 간격으로 주기적으로 Polling하는 것보다는 효율적이지만 여전히 비효율적이다.

 

웹소켓은 요청을 위해서 새로운 연결을 만들 필요가 없고, 추가적인 헤더가 필요없기 때문에 Long Polling 방식에 비해서 효율적으로 작동한다

 

1.5.2. Multipart streaming vs websocket

Multipart streaming은 multipart/x-mixed-replace를 이용해서, 연결을 끊지 않고 하나의 HTTP 연결에서 데이터를 보내는 방식이다. 서버측은 Content-type를 multipart/x-mixed-replace로 하고 스트림 메시지의 boundary를 구분하기 위한 boundary문자를 정의하면 된다. 대략 아래와 같은 모습이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 200 OK
Date: Fri, 08 Jul 2011 00:59:41 GMT
Server: Apache/2.2.4 (Unix) PHP/5.2.0
Content-Type: multipart/x-mixed-replace;boundary=myboundarystring
--myboundarystring
Content-type: text/html
Chating message 1
--myboundarystring
Content-type: text/html
Chating message 2
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

데이터를 일방적으로 보내는(말그대로 streaming) 용도라면 쓸만하다. 하지만 하나의 TCP 포트로 읽기와 쓰기를 동시에 할 수 있는 웹소켓과 달리, 읽기만 할 수 있기 때문에 상호작용하는 서비스를 만들려면 약간의 꼼수를 부려야 하는 단점이 있다. 예컨데 채팅 서비스를 구현할 경우 메시지 입력은 다른 포트를 통해서 받아야 한다.

 

대략 아래와 같은 과정을 밟아야 할 거다. 깔끔하지 않다.

 

 

1.5.3. socket.io

socket.io는 이용해서 브라우저의 종류에 상관없이 실시간 통신을 구현할 수 있도록 한 도구다. 도구라고 한 이유는 웹소켓과 같은 단일 기술이 아닌, 여러 기술들의 모음이기 때문이다. socket.io는 웹소켓, FlashSocket, AJAX long polling, AJAX multipart streaming, Forever Iframe, JSONP Polling 기술들을 포함하고 있다.

 

socket.io는 웹브라우저의 사양을 확인해서 적당한 기술을 선택해서 실시간 통신을 구현한다. 웹소켓의 경우 IE 9.0 이하 버전은 지원하지 않는다. 우리나라에서는 IE 9.0도 무시할 수가 없는데, socket.io는 좋은 선택이 될 수 있다. 대부분의 브라우저에 대해서는 웹소켓을 이용해서 통신을 하고, 지원하지 않는 브라우저는 Login polling등의 기술을 이용해서 실시간 통신을 구현할 수 있기 때문이다.

 

단점은 Node.JS에서만 사용할 수 있다는 점이다. 웹소켓은 언어별/프레임워크별로 구비되 있다.

 

1.6. 웹소켓과 세션

예컨데 cookie 값을 읽을 수 있느냐 하는 건데, 브라우저마다 다른 것 같다. chrome(28.0.1500)의 경우 handshake때 cookie를 전송하지 않았는데, firefox(24.0)은 cookie를 전송했다. cookie를 이용해서 값을 넘겨주는 건 좋은 방법이 아닌 것 같다. URL 파라메터로 넘기는게 제일 깔끔하다. 채팅에 이름을 입력하고 싶다면 아래와 같이 값을 넘겨야 하겠다.

1
ws://localhost:3000/chat?name=yundream
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

1.7. 클라이언트에서 웹소켓 API 사용하기

웹소켓 API는 W3C에서 관리한다. 클라이언트는 단지 6개의 API로 모든 통신이 가능하다. 4개의 이벤트 핸들러와 2개의 함수로 구성된다. 이벤트 핸들러는 네트워크 상태를 알려주기 위해서 사용한다. 나머지 2개의 함수는 메시지를 보내고 웹소켓을 닫기 위해서 사용한다.

 

이벤트 핸들러 설명
onopen 웹소켓이 열리면 호출
onmessage 메시지가 도착하면 호출
onerror 에러가 발생하면 호출
onclose 웹소켓이 닫히면 호출
함수 설명
send 메시지 전송
close 웹소켓 닫기
사용 예제 : 채팅을 위한 클라이언트 프로그램이다. 테스트할 수 있는 완전한 코드는 여기를 참고.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
window.onload = function(){
(function(){
var show = function(el){
return function(msg){ el.innerHTML = msg + '<br />' + el.innerHTML; }
}(document.getElementById('msgs'));
var ws = new WebSocket('ws://' + window.location.host + window.location.pathname);
ws.onopen = function() { show('websocket opened'); };
ws.onclose = function() { show('websocket closed'); }
ws.onmessage = function(m) { show('websocket message: ' + m.data); };
var sender = function(f){
var input = document.getElementById('input');
input.onclick = function(){ input.value = "" };
f.onsubmit = function(){
ws.send(input.value);
input.value = "send a message";
return false;
}
}(document.getElementById('form'));
})();
}
</script>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

2. 디버깅 및 테스트

2.1. 웹브라우저의 웹소켓 지원여부 확인

http://www.websocket.org/echo.html 에서 사용중인 웹 브라우저의 웹소켓 지연여부를 확인할 수 있다.

 

 Websocket 지원

 

2.2. Chrome Simple Websocket Client

크롬웹브라우저를 사용하고 있다면 simple websocket cleint extension을 이용해서 간단하게 웹소켓을 테스트할 수 있다.

 

Simple WebSocket Client 다운로드

 

2.3. CURL로 테스트

CURL로도 테스트가 가능하다. 그렇다고 메시지 교환까지 테스트 가능한 건 아니고, handshake과정까지만 테스트할 수 있다. 웹소켓 handshake 과정을 빠르게 디버깅하고 싶을 때 사용할 수 있겠다. chat 서버 띄운다음 테스트를 해봤다.

1
2
3
4
5
6
7
# curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H \
"Host: echo.websocket.org" -H "Origin: http://localhost:3000" http://localhost:3000/chat
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://localhost:3000
WebSocket-Location: ws://echo.websocket.org/chat
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

3. 웹서버의 웹소켓 지원

Apache, NginX, IIS, GWS등 대부분의 웹 서버들이 웹 소켓을 지원한다.

3.1. NginX에서의 웹 서버 지원

요즘 NginX를 주로 사용하고 있어서 테스트를 했다. NginX를 리버스 프락시 서버로 이용 할 때, upstream 서버들이 웹 소켓을 서비스한다면, 아래와 같이 설정하면 된다.

1
2
3
4
5
6
location /wsapp/ {
proxy_pass http://wsbackend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

3.2. AWS에서의 웹 서버 지원

AWS의 ELB(Elastic Load balancer)는 HTTP 프로토콜 차원에서 웹 소켓을 지원하지 않는다. Listener를 TCP 타입으로 설정하면 되지만, 대신 HTTP의 기능인 스티키세션이나 HTTP health check등의 기능을 이용 할 수 없다.

 

4. 참고

 


  1. ^TCP는 연결을 위해서 3번의 패킷교환이 필요하며, 완전한 종료를 위해서 4번의 패킷교환이 이루어져야 한다. 여기에는 상당히 많은 비용이 들어간다.
  2. ^전 이중통신이라고 부른다. 수신과 송신을 동시에 처리할 수 있는 통신 방식을 의미한다.
반응형
반응형

local file을 크롬 브라우저로 보는 상황에서

A 문서에서 B 문서를 띄우고 (Parent Window - Child Window) 

B 문서에서 A 문서의 DOM으로 접속하여 데이터를 보내려는 경우 아래와 같은 에러 메세지를 개발자콘솔창에서 볼 수 있다. 


Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match. 

 


실제 웹서버로 올려서 실행하는 경우에는 발생하지 않는 문제이나 개발자 테스트 중에 발생 될 수 있는 문제이며, 

파이어폭스에서는 정상적으로 수행이 된다. 

이는 크롬의 보안 정책이 특정 버전 이후로 강화되어서 라고 한다. 


대처 방법으로는 크롬실행시 아래와 같은 옵션을 추가하면 된다. 


--disable-web-security 

 


혹은 


크롬 웹스토어에서 확장프로그램으로 아래 기능을 추가하면 된다. 


 Allow-Control-Allow-Origin: *

 


링크는 아래와 같다. 


https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi


위 방법은 Ajax 로 다른 도메인(cross domain)에 접근하면 문제가 발생한다고 하며 동일하게 해결 할 수도 있다. 


reference : http://www.chromium.org/developers/how-tos/run-chromium-with-flags

reference : http://jongkwang.com/?p=852

 

출처 : http://redcarrot.tistory.com/155

반응형

+ Recent posts