AWS EC2 서버를 사용하여 배포하고자 하는 상황. 다음과 같이 80 포트가 거부되는 에러가 발생했다.
Error: listen EACCES: permission denied 0.0.0.0:80
리눅스 서버의 경우, 1024번 포트 아래의 포트 넘버는 previleged 넘버로 root 계정이 아니면 사용 할 수 없다고 한다.
해결 방법은 다음과 같이 2가지가 있다.
sudo su
로 root 계정으로 바꾼 다음 실행.80포트로 오는 요청을 8080(app 포트)으로 redirect 하겠다는 의미
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
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 {
}
}