Octoprint 도메인과 연결하기

0
589

라즈베리에 Octoprint 설치 후 내부 ip로 접속까지 했는데, 외부에서 접속해야 의미가 있기에
여기서는 HAProxy 와 apache의 virtual 호스팅 설정 파일을 수정하는 두 가지 방법을 살펴보겠다.

진행하기 전에 먼저 내가 사용할 주소를 cname에 등록 해야 한다.
예를 들어서 myprint.도메인주소 를 사용하고 싶다면 cname에 myprint를 등록해야 한다.
도메인 구입한 곳에서 cname 수정 가능하다.

  1. HAProxy 이용1-1. Backends에 Octoprint를 추가한다.

    Add를 누르고
    Name : myprint
    Servers : myprint ip주소:80 check
    이런 식으로 작성하고 저장한다. (myprint는 원하는 이름을 넣으면 된다.)

    2-2. Associations 에서 frontends 와  backends 를 연결한다.

    frontend에 http를 선택
    backend에 위에서 추가한 myprint 선택
    condition에 if { hdr_beg(Host) -i myprint. } 추가 후 저장한다.

  2. apache의 virtual 호스팅 설정 파일 수정 방법2-1 /etc/httpd/sites-enabled-user/httpd-vhost.conf-user 파일을 열고 아래 내용 추가
    <VirtualHost *:80>
    ProxyRequests off
    ServerName myprint.도메인주소
    <Proxy *>
    Order Deny,allow
    Allow from all
    </Proxy>
    ProxyPass / http://192.168.0.137:80/
    ProxyPassReverse / http://192.168.0.137:80/
    ProxyPreserveHost on
    </VirtualHost>

    myprint.도메인주소로 요청이 들어오면 192.168.0.137:80으로 연결을 해준다. 내 경우에 공유기에서 Octoprint의 주소가 192.168.0.137 인 상태이다.

이렇게 등록하고나면 접속이 가능한 걸 확인할 수 있다.
헌데 내 워드프레스에 한 번 접속하고나면 http가 https로 강제로 바뀌는것이 아닌가?
그래서 https://myprint.도메인주소 로 계속 연결이 되는것이다. 크롬 설정에서 캐시를 지우고 접속하면 http로 접속 되다가 또다시 워드프레스 사이트 접속하고나면 https로 접속이 되는것이다.

Octoprint도 시놀로지 ssl 인증 받을 때 domain.txt에 작성하여 같이 인증받으면 좋겠지만.. 불행히도 Octoprint는 apache서버가 아니라 Tornado라는 파이썬 서버(?)(이번에 처음들어 봤다.)였고 나의 내공이 부족하여 도저히 같이 인증 받을 수 없었다.

그리하여 워드프레스나 시놀로지는 https로 접속을하고 Octoprint는 http로 접속을 해야하는 상황… 그런데 자꾸 옥토프린터로 접속하면 http -> https로 바껴서 인증서에 문제가 있어 페이지 로딩이 안되는 것이다. 처음에는 시놀로지의 네트워크나 웹서버의 https 설정을 의심했고 그 다음에는 HAProxy를 의심 그 뒤에는 really simple ssl을 의심했다. 그리고 한참을 구글링 한 뒤에 알아낸 해법은

HAProxy의 frontends에서 https를 수정하면 된다는 것을 알았다.

https 누르고 edit을 누른다.
options을 보면 아래와 같이 되어있다.

option http-server-close,option forwardfor,rspirep ^Location:\ http://(.*)$    Location:\ https://\1, rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains

끝 부분 rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains 에서

\ includeSubDomains 을 삭제하고 저장한다.

그리고 인터넷 프로그램의 캐시를 삭제하면 http가 https로 강제적으로 변하지 않고 접속이 잘 된다.

한 가지 중요한 점을 빠트렸다. HAProxy에서 설정 변경후 configuration에서 write configuration을 눌러줘야 적용이 된다.

*HAProxy 설정파일 위치 usr/local/haproxy/var

guest
0 Comments
Inline Feedbacks
View all comments