인증서가 있는 사이트에서 인증서가 없는 사이트를 호출할 때 mixed content
오류가 발생합니다.
우선 인증서가 있는 사이트에서 인증서가 없는 사이트를 호출하는 것은 문제가 될 수 있으므로, 인증서를 사용하는 것이 가장 좋은 방법입니다.
그러나 내부에서만 사용하는 사이트이거나 인증서를 구매할 수 없는 환경이라면 아래와 같은 방법으로 해결할 수 있습니다.
기본적인 Nginx 설정 방법에 대한 지식이 없어도 아래 설정을 따라만 해도 가능합니다.
Nginx로 proxy_pass 설정하기
인증서가 있는 사이트라면, 해당 인증서를 사용해서 Nginx 설정을 하여 우회할 수 있습니다.
Nginx가 중개자 역할이 되어 보안 연결을 호출한 것처럼 위장할 수 있습니다.
Nginx 설정
server {
# listen [사용할 포트] ssl
listen 9999 ssl
# server_name [사용중인 인증서 이름]
server_name www.example.com
# 인증서 경로에 맞게 설정
ssl_certificate /etc/nginx/ssl/www.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/www.example.com.key;
# 중개하기 위한 주소
location /proxy {
# 요청하려는 주소
proxy_pass http://1.2.3.4/$is_args$args;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
add_header Content-Security-Policy "frame-ancestors 'self';";
}
}
location /proxy
는 나의 서버에서 호출하고자 하는 url입니다.
proxy_pass http://1.2.3.4/$is_args$args;
이 부분이 중요한데,
호출하고자 하는 사이트의 도메인이 있다면 도메인을 입력하면 되고, 없다면 ip를 입력하면 됩니다.$is_args$args
이 부분을 통해 파라미터까지 잘 전달할 수 있습니다.
만약 Nginx 설정을 정상적으로 했지만, 인증서 관련 오류가 발생한다면, 인증서 병합 과정이 필요할 수 있습니다.
이것은 인증서 체이닝 이슈 때문인데, 본 주제가 아니므로 해결 방법만 작성하겠습니다.
# cat [사이트인증서] [체인 CA 인증서] > [통합 인증서]
cat www.example.com.crt ca-bundle.crt > nginx-www.example.com.crt
ssl_certificate
에 새로 병합한 nginx-www.example.com.crt
를 입력하면 됩니다.
호출부
이제 호출부 코드를 수정해야 합니다.
만약 기존에 http://1.2.3.4/abcde.asp?text=테스트
이렇게 호출했다면, 이제부터는https://www.example.com:9999/proxy/abcde.asp?text=테스트
이런 식으로 호출하는 것입니다.
# https://[server_name]:[port]/[location 설정값]/[기존 호출 경로]
# 기존
http://1.2.3.4/abcde.asp?text=테스트
# 변경
https://www.example.com:9999/proxy/abcde.asp?text=테스트
'Development > Environment' 카테고리의 다른 글
Macbook "JVM DLL not found" 에러 조치 (0) | 2024.09.04 |
---|---|
Nginx 환경 설정으로 원하는 자원(CSS,JS,이미지)만 캐싱하기 (0) | 2023.10.17 |
메모리가 부족한 AWS Lightsail에서는 스왑 공간을 활용하자 (0) | 2023.08.02 |
AWS Lightsail에서 파이썬 여러 버전 관리 및 사용 :: pyenv (0) | 2023.08.01 |
AWS Lightsail에서 React 빌드&배포 시 멈추는 현상 (메모리 부족) (0) | 2023.07.07 |