작성
·
49
0
import express from "express";
import * as redis from "redis";
const PORT = 4000;
const createApp = async () => {
const app = express();
const client = redis.createClient({ url: "redis://localhost:6379" });
await client.connect();
app.use(express.json());
app.get("/", (req, res) => {
res.status(200).send("hello from express");
});
return app;
};
createApp().then((app) => {
app.listen(PORT, () => {
console.log(`App listening at port ${PORT}`);
});
});
Error: connect ECONNREFUSED 127.0.0.1:6379
[1] at createConnectionError (node:net:1647:14)
[1] at afterConnectMultiple (node:net:1677:16) {
[1] errno: -4078,
[1] code: 'ECONNREFUSED',
[1] syscall: 'connect',
[1] address: '127.0.0.1',
[1] port: 6379
[1] }
WSL의 bind를 0.0.0.0으로 바꿔봄
방화벽에서 6379 포트 허용함
WSL의 ip를 localhost 대신에 넣어서 접속 시도
이렇게 했는데 실행하면 계속 연결할 수 없다는 에러가 발생합니다. 혹시 해결 방법을 알 수 있을까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
WSL에 설치된 Redis와 연결이 되지 않는 문제는 일반적으로 네트워크 설정이나 WSL과 호스트 시스템 간의 통신 문제로 발생합니다. 아래 몇 가지 해결 방법을 시도해 보시길 권장드립니다:
WSL에서 Redis 포트 확인 및 재시작: 우선 Redis가 WSL에서 제대로 실행 중인지, 그리고 6379 포트가 열려 있는지 확인하세요. Redis를 실행한 후 netstat -an
명령어로 포트가 열려 있는지 체크할 수 있습니다. 필요시 Redis 서버를 재시작해 보세요.
WSL과 호스트 시스템 간 IP 주소 확인: WSL에서 ifconfig
또는 ip addr
명령어를 통해 WSL의 내부 IP를 확인하세요. 이 IP를 Express 앱의 Redis 클라이언트 설정에 사용해 보세요. 예를 들어, const client = redis.createClient({ url: "redis://WSL_IP:6379" });
로 설정하세요.
Windows 방화벽 설정 재확인: 이미 포트 6379를 허용했다고 하셨지만, Windows의 방화벽 설정에서 포트 6379에 대한 인바운드 및 아웃바운드 규칙을 다시 확인해 주세요. 혹시 모르니 방화벽 규칙을 제거한 후 Redis를 잠시 테스트하는 것도 방법입니다.
WSL의 외부 호스트 접근 허용: WSL에서 실행 중인 서비스를 외부 호스트에서 접근할 수 있도록 설정이 되어 있는지 확인합니다. /etc/redis/redis.conf
파일에서 bind 0.0.0.0
설정을 추가하고, protected-mode
옵션이 no
로 되어 있는지도 확인합니다.
WSL과 Windows 간 호스트 이름 해석 문제 확인: WSL과 Windows 간의 호스트 이름 해석에 문제가 있을 수 있기 때문에 localhost
대신 Redis가 작동하는 정확한 IP 주소를 사용해 보세요.
이 문제는 네트워크 설정에 따라 다르게 발생할 수 있으므로 다양한 접근 방법을 시도해보셔야 할 수 있습니다.
유사한 문제를 가지고 있었던 다른 학습자의 질문과 답변이 존재합니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
포트 열려 있는데 연결은 안 됩니다. redis-cli ping은 정상적으로 되는데 연결이 안됩니다.
WSL의 ip로도 시도해보았는데 안됩니다.
인바운드 아웃바운드 둘 다 설정해놨습니다.
설정 바꿨는데 안 됩니다.
127.0.0.1 / localhost / redis IP 셋 다 해봤는데 안 됩니다.
유사한 문제를 가진 학습자의 질문 링크를 봤는데 저는 서버 실행중이라 해당 사항이 없습니다.
왜... 안 될까요?
+) 2024.11.07 다시 해보니 이유는 모르겠지만 해결 됐습니다!