모두에서 HTTP 프록시,UNABLE_TO_VERIFY_LEAF_SIGNATURE 노드
를 사용하는 동안 나는 다른 서버로 verbatum 모든 요청을 전달하는 간단한 프록시를 만들려고하고 있습니다. 이렇게하려면 "http-proxy"npm을 사용합니다. 로컬에서 클라우드 서버로 이동하려고합니다. 처음에 http-proxy를 설정할 때 "첫 번째 인증서를 확인할 수 없음"이라는 오류가 나타났습니다. 온라인으로 조사한 결과 자체 서명 인증서가 있다는 사실을 알았습니다. 자체 서명되었으므로 인증서 저장소에 없으므로 유효성을 확인할 수 없습니다. 그러나 개발 과정에서이 작업이 필요하지 않기 때문에 인증서 확인을 무시하기 위해 "secure : false"를 추가했습니다. 나는 그것이 생산에서 안전하지 못하다는 것을 알고 있지만, 나는 지금 당장이 문제를 해결하려고 노력하고있다. 이 업데이트는 실제로이 오류를 해결했습니다.
이제 "UNABLE_TO_VERIFY_LEAF_SIGNATURE"오류가 발생합니다.
이 오류를 제거하는 방법을 알아낼 수 있습니까? 나는 이것을 추가하려고 시도했다 :process.env [ 'NODE_TLS_REJECT_UNAUTHORIZED'] = '0'
그러나 여전히 오류를 보여줍니다. http-proxy가 내 보낸 이벤트에서 오류가 발생합니다 (이 이벤트의 경우 아래 코드 참조). 내가 itno 'proxyRes'를 드릴 다운하면 나는 proxyRes에서이 오류를 볼 수 있습니다 -> 연결 -> authorizationError -> UNABLE_TO_VERIFY_LEAF_SIGNATURE
다음아래에있는 내 코드입니다 :
'use strict'
require('dotenv').config({silent: true})
var util = require('util');
const loggerFactory = require('./utils/logger')
const express = require('express')
const defaultRouter = require('./routes/default')
var logger = loggerFactory.consoleLogger
const proxy = require('http-proxy');
module.exports = (config) => {
const app = express()
// app.use(loggerFactory.requestLogger())
app.set('json spaces', 2)
app.set('port', config.express.port)
app.use('', defaultRouter)
process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'
var apiProxy = proxy.createProxyServer({});
var proxyUrl = process.env.HOMEINSPECTIONSERVER_URL;
app.use((req,res,next) => {
apiProxy.web(req, res,
{
target: proxyUrl,
secure: false,
}
);
apiProxy.on('error', function(e) {
logger.error("Error during proxy call!")
logger.error("This is the error : " + e)
next('route')
});
apiProxy.on('proxyReq', function(proxyReq, req, res, options) {
logger.info("---REQUEST---")
console.log("---REQUEST---")
// logger.info(util.inspect(proxyReq))
proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
});
apiProxy.on('proxyRes', function (proxyRes, req, res) {
// logger.info("---RESPONSE---")
// logger.info(util.inspect(proxyRes))
// logger.info("---RESPONSEEND---")
logger.info('RAW Response from the target',
JSON.stringify(proxyRes.headers, true, 2));
});
apiProxy.on('open', function (proxySocket) {
proxySocket.on('data', hybiParseAndLogMessage);
});
apiProxy.on('close', function (res, socket, head) {
console.log('Client disconnected');
});
apiProxy.on('start', function (req, res, target) {
// console.log('Started Request!');
});
})
app.use((req, res) => {
// logger.info('starting request...')
res.json(res.locals.standardResponse)
})
app.use((err, req, res, next) => {
var statusCode = 500
if (res.locals.standardResponse) {
res.locals.standardResponse.error = err
statusCode = err.statusCode || 600
logger.error(err)
res.status(statusCode).json(res.locals.standardResponse)
}
if (err.error !== undefined && err.error.httpStatus !== undefined) {
statusCode = err.error.httpStatus
} else {
statusCode = err.statusCode || 600
}
logger.error(err)
res.status(statusCode).json(res.body)
})
return app
} 어떤 들어