이 방법은 어떤 설정을 이용하더라도, 이미지 로딩에 문제가 발행하거나, 위키 편집기가 제대로 동작하지 않는 문제가 발생합니다. 그 원인은 파악이 되지 않습니다.
오픈-소스 바니쉬는 안타깝게도 SSL/TLS를 지원하지 않습니다. 물론 Varnish Cache Plus는 TLS를 지원합니다.
어쨌든, 같은 컴퓨터에서 바니쉬와 엔진엑스가 동작중이라면, 보통 엔진엑스가 8080포트를 듣고, 80번 포트는 바니쉬가 듣고 있습니다.
만약 외부에서 443 포트로 접근을 하면, 엔진엑스가 기동해서 바니쉬로 넘겨서 데이터를 처리한 후에, 결과를 엔진엑스가 받아서 외부로 전송하고자 합니다.
기존 파일에서, 예를 들어, /etc/nginx/nginx.conf, /etc/nginx/site-available/default 등의 파일에 ssl 관련 설정을 모두 주석처리한 후에, 해당 내용을 별도의 파일, 예를 들어, /etc/nginx/site-available/default.ssl로 모읍니다.
server {
listen 443 ssl default_server http2;
listen [::]:443 ssl default_server http2;
ssl_certificate /etc/letsencrypt/live/dawoum.duckdns.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dawoum.duckdns.org/privkey.pem;
server_name dawoum.duckdns.org;
location / {
# Pass the request on to Varnish.
proxy_pass http://127.0.0.1:80;
# Pass some headers to the downstream server, so it can identify the host.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Tell any web apps like Drupal that the session is HTTPS.
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Secure on;
}
}
그리고 이 파일을 엔진엑스 시작과 함께, 사용하도록 연결합니다.
- cd /etc/nginx/site-enabled
- sudo ln -sf /etc/nginx/site-available/default.ssl .
이 포트에 걸쳐 통과하는 모든 것이 암호화되는 것은 아니기 때문에, 바니쉬 서버가 동일한 컴퓨터 또는 같은 로컬 네트워크에 있을 때 이용하는 것이 좋겠습니다.
Varnish Configuration
이런 설정 아래에서, 데비안의 기본 바니쉬 또는 이 서버의 이전 바니쉬 설정으로 사용하면,
- 이미지를 로딩하지 못하는 문제가 생깁니다.
- 위키편집기에서 아이콘들이 한쪽으로 뭉치는 현상이 있습니다.
- css, js를 제대로 처리하지 못하는 경우가 생깁니다.
- 기타 다른 문제가 발생합니다.
그 원인은 크게 2가지에서 오는 것으로 보입니다.
- 바니쉬 설정
- 위의 것 외에 특정 ssl 설정
어떤 ssl 설정이 영향을 미치는지는 현재로서는 확인하지 않습니다.
Other SSL Termination
다른 대안으로는 바니쉬 소프트웨어에서 오픈-소스로 개발 중인 것으로 보이는 hitch가 있습니다. 이 문서를 참고하십시오.
어쨌든, hitch는 몇 가지 버전과 설정을 테스트했으나, 제대로 기동이 되지 않았습니다. 더구나, 오류 메시지가 무엇인지 정확히 알려주지 않기 때문에, 어디를 손봐야 하는지 확인이 되지 않았습니다.
결국 HAProxy를 이용해서 설정을 완료했습니다.