코어 수정 없이 첨부된 이미지 및 영상 주소 치환방법이 있을까요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 8.0 |
이미지 캐시서버를 별도로 구축하였는데요,
라이믹스의 코어 수정없이
로드되는 모든 이미지의 주소를
https://원래주소.com/~~~.jpg
에서
https://img.원래주소.com/~~~.jpg
로 자동으로 바꾸어 보여줄수있는 방법이 있을까요?
아래 블로그의 우성군님께서는 nginx의 sub filter을 이용하시어 다음과같이 nginx 설정을 변경하였던데
https://www.wsgvet.com/web/243#c_263
저는 작동을 하지 않더라구요... ㅠㅠ
sub_filter_once off;
sub_filter 'https://mydomain.com/files/attach/images/' 'https://cdn.mydomain.com/files/attach/images/';
댓글 4
php정규식을 몰라서 치환 애드온은 제작을 하지 못 하고 있네요 ㅠㅠ
답은 애드온이군요... ㅠㅠ
단순히 A라는 문자열을 B로 치환하는 기능이라면
정규식까지 동원할 필요 없이 str_replace 함수로 하셔도 됩니다.
물론 속도는 정규식이 훨씬 빠르긴 합니다...
좀 많이 늦은거 같지만 이 글을 다음에 보실 분들을 위해 남깁니다.
라이믹스에는 엔진단의 필터를 수정하는 기능이 들어있지 않습니다.
해당 기능이 작동하지 않는 것은 무조건 엔진의 서버블록문제입니다.
아마도 서버블록 어딘가에 SNI 혹은 http를 https로 강제로 리다이렉팅 시키는 구문이 추가되어 있을겁니다.
이 경우 80서버블록이나 SNI서버블록의 location에 서브필터를 추가해도 서브필터는 작동하지 않을 수 있습니다.
해결방법 :
443(https) 블록에 명시적으로 규칙을 적어서 해결할 수 있습니다.
해당 리다이렉트 구문은 놔두시고 서브필터를 사용하실때 location / 을 사용하지 마시고
listen 443 서버 블록에 서브필터를 추가하시면 아마 제대로 작동할 겁니다.
애드온이나 모듈은 결국 트리거 갯수를 늘리기 때문에 파일 처리 갯수에 따라 성능저하가 일어날 수 있어 엔진단에서 한꺼번에 처리하시는걸 추천합니다.
예제 :
listen 443 ssl;
ssl_certificate /etc/mydomain.kr/my.pem;
ssl_certificate_key /etc/mydomain.kr/my_key.pem;
include /etc/mydomain/options-ssl-nginx.conf;
ssl_dhparam /etc/mydomain/ssl-dhparams.pem;
sub_filter 'src="/files' 'src="https://mydomain.kr/files';
sub_filter_once off;