fastify 배포 시 외부접속 안되는 문제 해결방법
fastify 서버를 EC2에 배포하려고 하는데
분명 포트도 열어줬는데 접속이 안되서
테스트로 express 서버 띄워봤는데 이건 접속이 잘됐다.. 그래서 EC2 인스턴스 문제나 보안그룹 문제는 아니라고 판단했다.
그래서 로컬에서 보내는 요청은 되는지
curl http://localhost:8080
으로 확인해보니까 이건 된다.
서버는 잘 뜨는 걸 확인하고 'fastify 외부 접근' 등으로 검색해보니까
https://stackoverflow.com/questions/14043926/node-js-connect-only-works-on-localhost
Node.js connect only works on localhost
I've written a small Node.js app, using connect, that serves up a web page, then sends it regular updates. It also accepts and logs user observations to a disk file. It works fine as long as I am on
stackoverflow.com
기본적으로 127.0.0.1 (localhost)에 서버가 띄워지는데
이를 0.0.0.0 을 listen 하도록 변경하라고 한다.
둘의 차이를 검색해보니 아래와 같았다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=aou12&logNo=221371564012
127.0.0.1 vs 0.0.0.0 차이
* 127.0.0.1 127.0.0.1은 로컬 호스트 즉 자기 스스로를 가리키는 IP - 동일한 기계에서만 액세스할 수 ...
blog.naver.com
EC2 생성할 때 처럼 기본적으로 외부접근이 모두 막혀있는 듯하다.
아래 처럼 작성하라는 뜻!
const fastify = require('fastify')()
fastify.get('/', async (request, reply) => {
return { hello: 'world' }
})
fastify.listen(8080, "0.0.0.0" ,function (err) {
if (err) throw err
fastify.log.info(`server listening on ${fastify.server.address().port}`)
})
CORS 관련 설정이나 npm 패키지 권한 문제인줄 알고 한참 헤매다가
대차게 꼬여서 EC2 지우고 다시 했다 ^^... 아나
아무튼 성공!
그러면 로컬에 띄운 React 서버에서만 접근할 수 있도록 하려면 다시 저 부분만 없애면 되는건가? 나중에 테스트 해봐야겠다.