Total: Today: Yesterday:
노하우/Server | 2020. 5. 31. 18:58 | Posted by 자수씨

웹소켓 서버를 nginx 를 통해 포워딩을 하려고 단순하게 아래와 같이 서버 설정을 할 경우 정상적으로 처리가 되지 않는다.

    server {
        ...

        # forward {context-path}
        location /{context-path}/ {
            proxy_pass http://localhost:{port}/{context-path}/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
        }

아래와 같이 map 설정을 해주어야 정상동작을 한다.

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    server {
        ...

 

참고자료: http://nginx.org/en/docs/http/websocket.html

'노하우 > Server' 카테고리의 다른 글

[MongoDB] CentOS 7에 설치하기  (0) 2019.08.10
[scouter] AWS EC2 인스턴스에 scouter 설치하기  (1) 2019.04.19

노하우/WAS | 2019. 5. 23. 16:36 | Posted by 자수씨

Apache Http Server 나 Nginx 에서 사용하던 인증서를 Tomcat 에서 사용하려고 보니 바로 적용이 안되군요...
(pkcs12 형식으로 변환이 필요)

./chainca.crt
./mydomain.com.crt
./mydomain.com.key

위와 같이 체인인증서와 ROOT 인증서가 합쳐저 있는 chainca.crt 와 도메인의 인증서가 있는 mydomain.com.crt 를 하나의 파일로 합쳐 줍니다.

$ cat mydomain.com.crt chainca.crt > mydomain.com.chainca.crt

openssl 을 이용하여 pkcs12 형식으로 변환합니다.

$ openssl pkcs12 -export -in mydomain.com.chainca.crt -inkey mydomain.com.key -out mydomain.com.p12 -name tomcat
Enter Export Password: (key 파일 암호입력)
Verifying – Enter Export Password: (key 파일 암호입력)

정상적으로 변환을 확인하려면 아래 명령어를 이용합니다.

$ keytool -list -v -keystore mydomain.com.p12 -storetype pkcs12

$CATALINA_HOME/conf/server.xml

아래와 같이 커넥터를 추가합니다.

<Connector port="{SSL포트}" maxHttpHeaderSize="8192"
           maxThreads="150" enableLookups="false" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
           keystoreFile="{인증서 경로}"
           keystoreType="PKCS12" keystorePass="{인증서 패스워드}"/>

해당 포트로 정상적으로 접근하면 설정 완료입니다.

참고자료