[error] EACCES: permission denied 0.0.0.0:80

mangojang·2023년 4월 18일
0

상황

AWS EC2 서버를 사용하여 배포하고자 하는 상황. 다음과 같이 80 포트가 거부되는 에러가 발생했다.

Error: listen EACCES: permission denied 0.0.0.0:80

원인

리눅스 서버의 경우, 1024번 포트 아래의 포트 넘버는 previleged 넘버로 root 계정이 아니면 사용 할 수 없다고 한다.

해결

해결 방법은 다음과 같이 2가지가 있다.

  1. root 계정으로 실행 한다.
    • sudo su 로 root 계정으로 바꾼 다음 실행.
  2. 80포트를 다른 포트(app 포트)로 redirect 시킨다.
    • iptables 이용
      • 80포트로 오는 요청을 8080(app 포트)으로 redirect 하겠다는 의미

        iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
    • nginx 이용
      • proxy 설정을 아래와 같이 추가 해준다.

        server {
        
            listen       80;
            server_name  my-app
        
            client_max_body_size 10M;
        
            location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-NginX-Proxy true;
        
                proxy_pass http://localhost:8080; 
                proxy_redirect off;
            }
        
            error_page 404 /404.html;
                location = /40x.html {
            }
        
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        
        }

참고 문헌

profile
한 걸음 한 걸음 계속 걷는 자가 일류다

0개의 댓글