AWS ELB를 통해 WebSocket을 통해
경위
너무 쉽지 않았다.
문제
Connection
헤더 및 Upgrade
TCP
로 하면 이번에는 X-Fowarded-For
헤더를 붙여 주지 않는다 프록시 프로토콜을 사용할 수밖에없는 것 같습니다.
Proxy Protocol이란?
예
PROXY TCP4 198.51.100.22 203.0.113.7 80 80\r\n
GET / HTTP/1.1\r\n
Host: example.com\r\n
\r\n
전체 구성
ELB 설정
TCP
로 설정하십시오. 중요한 프록시 프로토콜 설정은 AWS 콘솔에서 사용할 수 없습니다.
AWS CLI 설치
Mac
$ brew install awscli
Linux (Python 2.6.5 이상 필요)
$ pip install awscli
Windows
설치자가 있기 때문에
AWS CLI 설정
Access Key ID
및 Secret Access Key
설정 $ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-northeast-1
Default output format [None]: ENTER
ELB - ProxyProtocol 설정
$ aws elb create-load-balancer-policy \
--load-balancer-name {ELB Name}
--policy-name EnableProxyProtocol \
--policy-type-name ProxyProtocolPolicyType \
--policy-attributes \
AttributeName=ProxyProtocol,AttributeValue=true
$ aws elb set-load-balancer-policies-for-backend-server \
--load-balancer-name {ELB Name} \
--instance-port 80 \
--policy-names EnableProxyProtocol
ELB - 프록시 프로토콜 설정 확인
$ aws elb describe-load-balancers \
--load-balancer-name {ELB Name}
"BackendServerDescriptions": [
{
"InstancePort": 80,
"PolicyNames": [
"EnableProxyProtocol"
]
}
],
Nginx 설정 (1)
server {
listen 80 proxy_protocol;
real_ip_header proxy_protocol;
location / {
proxy_http_version "1.1";
proxy_pass http://localhost:3000/;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_protocol_addr;
proxy_set_header X-Forwarded-Host $http_host;
}
}
Nginx 설정 (2)
Upgrade
헤더가 비어 있는 경우는 Connection
헤더를 close
로 한다 http {
...
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
...
}
요약
결국 무엇이 기쁘다?
참고
Reference
이 문제에 관하여(AWS ELB를 통해 WebSocket을 통해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tarom/items/0ae12fa3876f5b5d18e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)