Nginx 80 to 443 port forwarding not working

Nginx 80 to 443 port forwarding not working

HTTP(=80) 접속 시 HTTPS(=443)로 포트포워딩이 되지 않는 문제


🚨 문제


사이드 프로젝트 서버 구축중 한 삽질이다


  1. Nginx를 리버스 프록시로 도입
  2. SSL 발급 및 HTTPS 구축
  3. HTTPS 2.0 설정


완료 후 우리 사이드 프로젝트 도메인에 접속하는데, http://domain 으로 접속하면 https://domain 으로 포트포워딩이 되지 않는 문제가 있음을 알았다.


🚧 원인


처음엔 바로 nginx.conf 를 확인했으나, 역시 아무런 이상 없이 잘 설정돼있었다.


 server {
        listen 80;
        listen 443 ssl http2;
        server_name example.com www.example.com;
        root         /var/www/html;

        gzip on;
        gzip_comp_level 6;
        gzip_min_length 500;
        gzip_buffers 16 8k;
        gzip_proxied any;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_protocols TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

        if ($scheme != "https") {
            return 301 https://$host$request_uri;
        }


분명 아무런 문제가 없는데 당연히 되야 할 것이 안되니 애꿎은 nginx.conf만 계속 고쳐봤다. (이러면 안되는데 😭)

한시간정도 이짓거리를 하다가 잠깐 현타가 와서 멍때리는데, 문득 설마 방화벽이 문젠가? 라는 생각이 들어서 방화벽을 확인해보니…


$ sudo iptables -t nat -L --line-numbers
Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination


리눅스 방화벽에서 80포트 접속시 8080으로 포트포워딩이 걸려있었다…

이때 내가 처음 서버 구축할때 임시로 이걸 설정해뒀던게 섬광처럼 떠올랐다… 😫😫😫


그러니까 웹서버에도 포트포워딩이 걸려있고, OS 방화벽에도 포트포워딩이 걸려있는 상태였고, OS 방화벽이 웹서버보다 더 먼저 외부 요청을 받으니 방화벽에 걸려있는 포트포워딩이 작동한셈이다.

따라서 방화벽의 포트포워딩 을 제거하면 자연스레 웹서버의 포트포워딩이 동작하게 될 것이다.


😂 해결


image


$ sudo iptables -t nat -D PREROUTING 1


… 자괴감에 허우적대며 해당 옵션을 제거하니 역시 잘 해결되었다…

내 한시간… 😫



© 2022. All rights reserved.