반응형

간혹 intellij에서 서비스 실행시  java.net.BindException: Address already in use 가 뜨곤 한다.

서비스를 실행시키려는 PORT가 이미 사용중이라서 그렇다.

다음과 같이 명령어를 주어서 프로세스 ID를 알아내 Kill 하자.

$ lsof -i :포트번호

PID의 번호 31056을 KILL 시켜주면 된다.

$ kill -9 31056

 

반응형
반응형


톰캣(tomcat)의 기본포트가 8080인 이유를 아시나요???


많은 분들이 WAS로써 톰캣(tomcat)을 사용하실텐데요. 


특히나 요즘은 스프링부트로 인한 임베디드 톰캣을 사용하실줄로 압니다.


톰캣도 그렇고 스프링부트의 임베디드 톰캣도 그렇고 그럼 왜 기본 디폴트 포트는 8080이냐???하는 의문이 생길 수도 있는데요...(저는 그랬습니다...)


간단히 설명을 드리자면 리눅스나 유닉스는 1024이하의 포트(well-known port)들은 일반 유저 권한에서 바인딩 할 수 없도록 되어 있습니다.


이유는 보안때문인데요~!



8080포트에 대한 특별한 이유는 없습니다. 그저 1024이상의 포트중 하나를 임의로 디폴트로 설정한 것 일뿐(이라고 저는 생각합니다.)


하지만 외부 서비스를 해야하는경우에는 80포트로의 접근이 필요한 경우가 있습니다.


단순히 naver.com:8080이라고 사용자들이 접속하게 된다면 불편할테니까요...


그래서 루트권한(sudo)로 톰캣 포트를 80으로 설정 후 어플리케이션을 기동시켜서 사용할 수 는 있습니다.


다만! 위에서 말씀드렸듯 보안 문제가 존재합니다.


애드센스 자동삽입 광고


톰캣서버는 구동시에 tomcat 유저 권한으로 구동되게 됩니다. 때문에 톰캣을 통해 서비스되는 웹을 통해 해킹이 되더라도


tomcat유저 권한에 해당하는 부분까지만 접근 가능하게 됩니다.


따라서 루트권한(sudo)로 80포트로 구동시키게 된다면 해킹당했을 경우보단 안전하다고 할 수 있습니다.




물론 이런 문제를 회피하는 방법은 iptables를 통한 포트포워딩 방식이나 WAS앞단에 웹서버(apache, nginx)를 둬서 해결할 수 있지만


저 경험상에 의해서 iptables를 통해 포트포워딩을 할 경우 문제가 있었던 경험이 있기에 톰캣 80포트 8080 포트로 포워딩 이슈 


앞단에 웹서버를 두시고 서비스하는 방법이 좋다고 생각합니다.

반응형
반응형

보통 웹서비스에서 포트를 두 개 사용하는 경우는 http, https를 사용하는 경우이다.


보통은 ssl작업은 앞단에 웹서버(apache, nginx)를 두지 처리하는데 springboot만으로도 처리가 가능하다.


application.properties에 server.port=8080을 설정해두고 


추가로 8082 포트를 사용하고자 하면 다음과같이  ConfigurableEmbeddedServletContainer에


Connector에 추가로 사용하고자 하는 포트(port)를 설정해 셋팅해주면 된다.




이렇게 설정하고 실행시켜서 테스트해보면


localhost:8080, localhost:8082로 모두 서비스를 사용할 수 있다.


어떻게 언제 사용하냐고????


보통은 http, https 처리하는 경우, 그 외에는 사실 잘모르겠다...

반응형

+ Recent posts