GCP SSL, Nginx, Https

이재훈·2024년 2월 25일
0

삽질모음집

목록 보기
6/8

위 글은 기록용이므로 흐름 파악용으로만 보실 것을 권장드립니다. :)

백엔드 API를 프론트 분들에게 GCP에 프로젝트를 배포하여 Swagger API를 제공하려고 합니다.

  • GCP ubuntu 22.04
  • nginx
  • SSL
  • docker

GCP 서버는 이미 만들어져 있고, 도메인도 구매했다는 가정하에 진행합니다.

1. 인스턴스 그룹 만들기

인스턴스 그룹은 단일 항목으로 관리할 수 있는 가상머신 인스턴스의 모음입니다.
New unmanaged instance Group(새로운 비관리형 인스턴스 그룹으로 만들고 VM 인스턴스를 추가해줍니다.

2. 로드밸런서 만들기

GCP에서 제공하는 부하분산기를 사용하요 사용자의 모든 요청은 해당 부하분산기를 통해 내부로 들어오게 됩니다.




여기서 프론트엔드는 요청을 받는 앞단의 로드밸런서이고 백엔드는 실행하려는 서비스가 돌고 있는 서버입니다. 백엔드에는 https를 적용할 필요가 없습니다.

프론트에는 인증서가 필요하므로 GCP에서 제공하는 SSL 인증서를 만들어서 넣어주었습니다.

부하분산기가 잘 작동되는 것을 확인할 수 있습니다.

Cloud DNS도 위와같이 설정해주었습니다. 가비아에 네임서버에도 아래와 같이 설정을 해주었습니다.

이제 해당 도메인에 들어오는 요청은 GCP 프론트엔드를 거쳐 GCP 백엔드(서비스가 돌아가고 있는 서버)로 넘어가게 됩니다. 443 -> 80 포트로 왔기 때문에 GCP 백엔드에는 Nginx를 설치하고 80 포트로 들어오는 요청을 8080포트로 리다이렉트 시켜주는 설정을 해줍니다.

vi /etc/nginx/sites-enabled/default
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name [ip입력];

        # SSL configuration
        #       # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        location / {
                 proxy_set_header    HOST $http_host;
                proxy_set_header    X-Real-IP $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header    X-Forwarded-Proto $scheme;
                proxy_set_header    X-NginX-Proxy true;
                proxy_pass http://localhost:8080;
                proxy_redirect  off;
                charset utf-8;


                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.

이제 백엔드 서버에 들어오는 요청을 80포트에서 8080포트로 리다이렉트를 하여 스웨거 페이지를 제공할 수 있게 하였습니다.

참조 블로그
https://keyhyuk-kim.medium.com/%EA%B5%AC%EA%B8%80-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%9E%AB%ED%8F%BC-gcp-compute-engine%EC%97%90-https-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0-e74489d2abf2

profile
부족함을 인정하고 노력하자

0개의 댓글