Node.js Redis外部接続
実際の構造はec 2 express<>lightsailです.
mac expressによる外部接続の迅速なテスト
1.コード
// redis.js
const redis = require("redis");
const CONFIG = require("../config/config");
const client = redis.createClient({url: CONFIG.REDIS.URL});
client.on("error", (err) => {
throw new CustomError(err.message, "500");
});
client.connect();
CONFIG.REDIS.URL
の値は次のとおりです.redis://[:패스워드@]호스트[:포트][/DB번호][?필드=값]
// ex
redis://localhost:6379
redis://localhost:8999/2
redis://:secrets@example.com:1234/9?foo=bar&baz=qux
// 나는 다음 형식
redis://:비밀번호@Lightsail_IP주소:포트
redisモジュールの使用方法を探していると、urlではなくホスト、ポートオプション接続がありますが、これはできません.npm redis公式ドキュメントの表示時にurlを使用する
// 접속 안됨
const client = redis.createClient({host: CONFIG.REDIS.HOST, port: CONFIG.REDIS.PORT});
2.LightsaveのRedis設定
$ sudo vi /etc/redis/redis.conf
すべてのip接続を許可するので、実際にはアプリケーションサーバipのみを使用することが望ましい# bind 127.0.0.1 ::1
bind 0.0.0.0 ::1
protected-mode yes
Lightsavelはredisデフォルトポート(6379)も開きます.redisパスワードの設定
RedisがあるLightsavelでパスワードを設定します.
$ redis-cli
redis 127.0.0.1:6379> AUTH "test"
(error) ERR Client sent AUTH, but no password is set # redis 비번 없음
redis 127.0.0.1:6379> CONFIG SET requirepass "사용할_비밀번호"
OK
redis 127.0.0.1:6379> AUTH "사용할_비밀번호"
OK
3.確認
redis-cliへのリモート接続
Macリモート接続の使用
# 비밀번호 없이 접속
$ redis-cli -h 호스트주소 -p 6379
호스트주소:6379> keys *
(error) NOAUTH Authentication required.
# 비밀번호 사용
$ redis-cli -h 호스트주소 -p 6379 -a "비밀번호"
호스트주소:6379> keys *
(empty array)
Postman+expressによるリモート接続の検証
urlにパスワードがない場合
redis://@Lightsail_IP주소:6379
urlにパスワードがある場合は、通常の動作
redis://:비밀번호@Lightsail_IP주소:6379
Redisにも良好なデータ挿入削除機能があることを確認する
4.参考
https://www.npmjs.com/package/redis
https://zetawiki.com/wiki/Redis_URI
https://xn--lg3bu39b.xn--mk1bu44c/96
Reference
この問題について(Node.js Redis外部接続), 我々は、より多くの情報をここで見つけました https://velog.io/@c1typ0p/Node.js-Redis-외부-접속テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol