이 문제는 좀 오래된 문제라 최근 코어 업데이트와 상관은 없습니다만 심각한 문제로 인해 해결을 해야 할 것 같습니다.

 

https://github.com/xpressengine/xe-core/issues/2360

 

일단 이슈로 등록을 해 두었습니다.

 

위젯이 배치된 페이지(주로 메인)에서 여러 위젯으로 출력하는 목록 중 일부 또는 특정 위젯의 전체목록의 도메인이 같은 서버의 전혀 다른 사이트 도메인으로 할당됩니다. 

주로 이미지 주소에 해당합니다. 이로 인해 이미지는 불러오지 못하게 되고 SSL인증서에 문제가 발생하게 됩니다.

 

웹뷰 앱이나 브라우저에 따라 경고를 발생시켜서 현상이 발생하는 경우 데미지가 좀 심각합니다.

이때 캐시파일 재생성을 해서 다시 정상적인 것으로 만들지 않으면 좋지 않은 상태가 유지가 되겠죠.

 

이것 서버 문제로 인해 이렇게 될 것 같다고는 상식적으로 생각이 들지 않는데요. 사이트 전체가 다른 도메인으로 설정된 케이스도아니구요.

 

이 문제 해결이 안된다면 서버 내 다른 사이트를 들어내야 하는 상황도 생각하고 있습니다.

 

 

  • profile

    XE는 같은 서버 내에 어떤 도메인이 더 있는지 전혀 모릅니다. 인간이 알려주지 않으면 절대 XE 혼자서 알아낼 수 없습니다. 즉 누군가가 예전에 그 도메인을 XE에게 알려준 적이 있다는 뜻이지요.

    사이트 운영 도중 도메인(기본URL)을 변경했거나, 멀티사이트(카페XE) 모듈을 잠깐이라도 설치해서 써본 적이 있다면 DB 어딘가에 그 도메인이 남아 있을 수도 있습니다.

    만약 이런 문제가 아닌데도 가끔씩 다른 사이트의 데이터가 나타나고, 캐시 재생성시 정상으로 돌아온다면 두 사이트의 캐시가 섞이고 있다고 의심해 볼 수 있습니다. opcache에서 문제가 생기고 있을 가능성도 있고, 만약 두 사이트가 동일한 오브젝트 캐시 방식(예: apc, memcached)을 사용하고 있다면 서로의 캐시 데이터를 덮어쓰고 있을 수도 있습니다. 이론적으로는 XE 설치 경로가 서로 다르다면 캐시도 분리되어야 합니다만, 그 부분에 버그가 있을지도...? 일단 두 사이트의 오브젝트 캐시 방식을 각각 다르게 설정하면 문제가 해결되는지 확인해 보시기 바랍니다.

  • profile profile

    사이트 운영 도중 도메인(기본URL) 을 변경한 적은 https 적용할때 변경한 것 외는 없습니다.
    멀티사이트 관련 모듈은 한번도 설치한 적이 없습니다. 해당 도메인은 XE와 전혀 관계 없는 도메인이라 XE의 데이터에는 어디에도 흔적이 있을 수 없는 도메인 입니다.

    사이트 캐시가 섞이는 문제로 보아야 한다면 XE에서 조치가 되어야 할 사항인지 궁금합니다.
    지금 다른 사이트를 들어낼 생각까지 하고 있습니다.

     

    관련 사이트는 단순 웹페이지 몇개가 있는 정적인 사이트라 캐시 같은게 전혀 필요 없어도 무방한 곳입니다. db 조차 사용하지 않는 가벼운 사이트 입니다.

  • profile profile
    두 사이트의 오브젝트 캐시 방식을 각각 다르게 설정하면 문제가 해결되는지 확인해 보시기 바랍니다.

    위 부분 문의 드립니다. 지금 다른 사이트의 경우는 제가 만든 html 만 존재하는 페이지들로 구성되어있습니다.
    루트폴더를 하나 더 생성해서 그쪽에 업로드해서 사이트 설정을 해서 완성했습니다.

    오브젝트 캐시 같은 것은 솔루션이나 CMS 같은 것이 아니라 전혀 건드리지 않았는데요. 다르게 설정하려면 어떻게 해야 하는지 설명이 가능한 범위라면 부탁드립니다.
  • profile profile
    다른 사이트가 XE가 아니라면 캐시가 섞일 가능성은 제로입니다.

    웹페이지에 처음부터 (즉, 소스보기를 해봐도) 다른 사이트의 주소가 박혀서 나오는 건가요? 아니면 페이지 소스는 정상인데 어디선가 잘못 리다이렉트되고 있는 것일까요? 전자라면 진짜로 귀신이 놀랄 노릇이고, 후자라면 아파치 rewrite 설정이나 SSL 설정 등을 점검해 볼 필요가 있겠습니다.

    참, 아파치에서 ServerName이 잘못 설정되어 있고 위젯에서 SERVER_NAME 변수를 참조하여 엉뚱한 주소를 생성하는 시나리오도 있겠네요. 코어에 포함된 위젯인가요, 아니면 서드파티 자료인가요?
  • profile profile
    위젯은 코어에 포함된 위젯입니다.

    소스보기 하면 다른 사이트 주소가 박혀있어서 제가 눈치를 채는거죠. 물론 이미지가 왜 엑박이 뜨는지 보려고 소스를 보게 되구요.
  • profile profile
    이미지 주소를 클플로 변환하는 애드온이 말썽을 부리고 있는 건 아니겠죠?
  • profile profile
    아니에요. 이건 예전부터 있던 문제에요.

    캐싱할때 이상한 사이트 내 다른 도메인 주소나 혹은 ip주소로 주소를 캐싱해버리는 상황인데요. 예전에 ip로 주소를 캐싱하는 문제는 한번 말씀 드렸던 것 같습니다.

    이게 위젯에서 목록의 링크 주소나 이런게 변하는게 아닌 이미지 주소만 변합니다. 캐싱할때 이미지 주소의 도메인이 엉뚱해 지는거죠.

    몇달에 혹은 한달에 한번 이렇게 랜덤한 아주 작은 빈도로요.
  • profile profile

    양쪽 사이트 루트에 phpinfo.php 파일을 올려서
    $_SERVER['SERVER_NAME'] 을 확인해 보니 두곳 모두 자신의 도메인이 표시됩니다.

    http://zi***p**s.co.kr/phpinfo.php

    두 사이트 모두 보실 수 있어요. 계신 곳 ip 를 넣어 두었습니다.

  • profile profile
    실제 증상을 보지 않으면 디버깅하기 쉽지 않겠네요. 다음에 또 문제가 생기면 소스보기 스크린샷이라도 찍어두시기 바랍니다 ㅎㅎ

    그리고 혹시 슈퍼캐시 모듈의 위젯 캐시 기능을 사용하고 계시다면 해당 위젯이나 모듈을 슈퍼 캐시에서 제외시키고 위젯 코드에서 직접 widget_cache를 설정해 보세요. 캐시가 이중으로 들어가면 어느 쪽이 문제인지 찾기 힘드니까요.
  • profile profile

    소스는 명확합니다. 이미지 주소의 도메인 부부만 정확히 다른 사이트 도메인으로 박힙니다. 또는 서버 ip로료..

     

    그 이후 경로는 위젯에서 샹성하는 정상적인 경로와 파일명을 가지구요.

  • profile profile

    아... 인증서 오류를 무시하고 https://zippypaws.co.kr 에 강제로 접속하면 https://pomelove.com 과 동일한 화면이 나오는군요. 그 서버에서 443 포트에 연결된 사이트는 하나뿐이니, 443 포트로 접속하면 도메인을 체크하지도 않고 아파치에서 그쪽에 바로 연결시켜 버리는 겁니다. 그런데 XE는 이런 식으로 비정상 접속하면 "잘못된 요청입니다"가 작렬하면서 URL 처리 관련 기능들이 모두 멘붕 상태에 빠져버립니다.

    정상적인 사용자라면 이 주소를 이용할 일은 없겠지만, 만약 인증서 오류를 무시하고 접속하는 로봇이 있다면, 그리고 딱 그 시점에 위젯 캐시가 생성되었다면... 코어가 헷갈려할 가능성도 있겠군요. IP로 접속한 경우도 마찬가지고요. (이런 문제 때문에라도 모든 사이트에 SSL을 적용하는 것이 좋습니다. SSL 적용된 사이트와 적용되지 않은 사이트가 섞여 있으면 아파치도 헷갈리고 XE도 헷갈리고...)

    가장 간단한 해결책은 사이트에 접속한 도메인이 pomelove.com이 아닌 경우 무조건 pomelove.com으로 리다이렉트시켜 버리면 됩니다. www를 떼어내는 규칙을 좀더 확장하면 될 것 같습니다.

  • profile profile
    예전에 ip 관련 으로 문의 드렸을때 결론이 ip로 들으오는 것을 도메인으로 리디렉트 시켜서 완화해보자 였는데 여기서 좀더 확장 되는 것이군요 ??

    흠.... 아닌 경우를 리디렉트 하는 구문 자체가 저에게는 넘사벽입니다 ㅋ
  • profile profile

    그럼 일단 해당 사이트를 ssl 사용으로 전환하겠습니다. 클라우드 플레어를 사용중이라 ssl 사용을 ON 하고 CDN 사용하면 되겠네요.

  • profile profile
    방금 클라우드플레어 CDN 사용으로 바꾸고 ssl 도 켰습니다. 이제 https로도 해당 사이트가 정상적으로 열리니 XE사이트로 열릴 일은 없어졌네요. 원인을 몰라 궁금해 하기만 했는데 결국 이것도 어떤 대상이 ip로 직접 접속 시도할때 동시에 캐싱이 이루어진 경우와 같은것을 밝혀내게 되었네요,

    이제 동일한 일은 벌어지지 않게 된게 거의 확실한 것 같습니다. 정확한 진단 감사합니다.
  • profile
    혹시 nginx 운영체제를 사용 하시나요?
  • profile profile
    저희는 아파치를 사용하고 있어요. 아파치님 ㅋ
  • profile profile
    아~ 그렇군요...^^
    nginx 에서는 CMS랑은 상관없이 가끔 비슷한 경험이 있어서요...ㅠㅠ
  • profile profile
    nginx에서는 아파치와 달리 SERVER_NAME에 의존하여 코딩하면 문제가 생기죠.. ㅎㅎ
  • profile profile
    그렇더라구요....^^;;
  • ?
    혹시 설치하실때 테이블 접두사를 같이 사용하여 설치를 하셨나요 ...?
  • ?
    얼마전 제 경험으로

    $_SERVER['SERVER_NAME'] 이건 아파치에서나 잘 통하는것

    Nginx라면 $_SERVER['HTTP_HOST'] 이렇게 해야 잘 되더군요. 물론 설정따라서 위 방식도 통하긴 하지만요.

    Apache 에서 Nginx 갈아 타시는분들 참고하세요. ㅎㅎ
  • profile
    https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

    example.com에 자신의 도메인을 입력해서 테스트 해보십시요.

     

    예전에 openssl로 인증서 설치한다고 한참 삽질을 했던 적이 있었습니다.

    그때 ssl.conf를 이것저것 만져놓은 바람에 나중에 LetsEncrypt 깔면서 에러가 많이 생겼던 적이 있습니다.

    나중에 확인해보니 ssl.con의 localhost virtualhost section이 중복되어 있어서 수정하고 문제가 없어졌었습니다.

     

  • profile profile
    의견 감사합니다. 대충 원인은 나온 것 같습니다. 지금 문제가 되는 XE 사이트의 인증서는문제가 없습니다. 감사합니다.
  • profile ?

    https://xetown.com/questions/937589 답변 주신것 처럼 간혹 위젯 섬네일의 경로가 ip주소/경로 이런식으로 표시되는 문제가 아직도 간간히 나타나고 있거든요.

     

    위 문제를 해결하신 것 같으신데요. 웹지기님 혹시 문제 원인과 해결을 어떻게 하셨는지 궁금합니다.

  • ? profile
    네. 이문제는 XE에서 그리고 웹서버에서 복합적인 문제로 발생합니다.
    저희 케이스는 하나의 서버에 두개의 사이트를 운영하다보니 ssl 사용 여부에 따라 문제가 생깁니다.

    웹호스팅이라면 아마 여러 사이트에서 ssl을 사용하면서 문제가 간혹 생길 수 있다고 봅니다. 서버 세팅을 잘 한다면 회피할 수도 있겠지만 저는 지식이 얕아서요.

    저희 케이스를 설명드리면
    a 사이트가 ssl을 사용합니다. 443 포트를 사용하죠.
    서버에서 허용한 443 포트는 a 사이트가 유일합니다. XE로 만들어진 사이트 입니다.

    그런데 b 사이트는 일반 웹페이지 사이트로 ssl을 사용하지 않았습니다.
    그런데 무식한 봇들이 가끔 b 사이트를 https 로 접속을 시도하고 사람에게 나타나는 경고창도 무시하고 그냥 https 로 접속합니다. 이때 아파치등에서 443포트로 접속을 막아주면 좋겠지만 그렇지 못하는 것 같구요.

    xe는 유입되는 도메인을 확인하지 않아 b 사이트의 도메인으로 접속이되고 이때 메인의 위젯 캐시가 재생성이 되버리면 이후 방문자들에게도 캐시가 다시 갱신되기 전까지는 이미지가 다른 사이트 도메인으로 로딩되어 엑박이 뜨고 웹뷰는 더 심하게 ssl 경고창이 뜨게 됩니다.

    같은 서버에서 443포트 접속시도를 하게 되면 지금 실제 유일하게 443포트를 사용하고 있는 도메인의 루트로 접속되어 버리는 문제가 원인입니다.

    이부분에 https://github.com/xpressengine/xe-core/issues/2360 이슈로 문의를 드렸지만 특별한 대책을 만들어주지는 않을 듯 합니다.

    저희의 경우 B 사이트도 SSL을 클라우드플레어를 통해 적용해서 https 접속을 하더라도 문제가 없도록 만들었습니다.

    웹호스팅의 경우는 직접 해결하지 못하고 서버세팅이나 그런것을 수정해야 할텐데 아마 쉽지 않을 수도 있을 것 같습니다.

    ssl이 사용되지 않는 같은 서버의 다른 사이트를 어떤 봇이 무작정 운영하시는 사이트의 포트로 https 로 접속을 시도한다면 문제가 발생할 수도 있습니다.
  • ? profile
    직접 하실 수 있는 방법은 .htaccess 파일에서 사용하시는 도메인이 아닌 경우 모두 차단을 하시면 되는데 구문은 저도 잘 모르겠습니다.
  • profile ?
    매번 정성껏 주시는 답변에 감사의 말씀드립니다.

    저희 사이트는 가상서버(nginx)에 1개의 사이트만 운영중이고 ssl 인증을 적용한 상태입니다. 혹시나 해서 예전 cafe xe 자료가 연관이 있을까 싶어 해당 자료는 디비 모두 삭제를 했는데도 간혹 증상이 나타납니다.
  • ? profile

    누군가 ip로 https 로 접속하거나 하는 경우 일 수도 있구요.(이 경우는 http로 접속해도 마찬가지 입니다.)
    서버에서 모든 대상(도메인)이 접속이 되도록 허용하셨으면 더 문제가 될 수도 있구요.
    지금 증상은 어찌 되었던 지금 사용하시는 도메인이 아닌 다른 도메인으로 접속이 되는 것 일것입니다.

    저 문제가 발생할때 이미지주소를 유심히 살펴보세요. 그 주소가 엉뚱해서 못불러오는 것 입니다.

  • profile ?
    넵 답변 감사합니다.
  • ? profile

    결론적으로 XE에서는 기본url 이외의 접속을 막아줄 의사가 없습니다. 라이믹스 사용자라면 혹시 모르겠구요.
    서버에서 ip가 되었던 혹은 다른 url이 허용되서 url로 들어오던 다른 url로 접속이 되는 것을 막아주셔야 합니다.

     

    어찌어찌 해서 ip로 든 url로든 xe가 설치된 서버의 루트폴더까지 접속이 되버리면 그 접속했던 ip나 도메인으로 xe가 동작되버리는게 문제의 핵심입니다.