๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํธ์คํธ์์ heroku์ ์ธ๋ถ https REST ์๋น์ค์ ์ฐ๊ฒฐํ๋ ค๊ณ ํฉ๋๋ค.
request(
{
url: config.get('host') +req.originalUrl,
method: req.method,
}, function (error, response, body) {
})
์ฝ๋ฐฑ์์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํธ์คํธ ์ด๋ฆ/IP๊ฐ ์ธ์ฆ์์ ๋์ฒด ์ด๋ฆ๊ณผ ์ผ์นํ์ง ์์ต๋๋ค: "ํธ์คํธ: localhost.๊ฐ ์ธ์ฆ์์ ๋์ฒด ์ด๋ฆ์ ์์ต๋๋ค: DNS:_.herokuapp.com, DNS:herokuapp.com "
ํธ์คํธ: ๋ก์ปฌ ํธ์คํธ. ์ธ์ฆ์์ ๋์ฒด ์ด๋ฆ์ ์์ต๋๋ค: DNS:_.herokuapp.com, DNS:herokuapp.com
๋ก์ปฌ์ ์ค์น๋ ๋์ผํ ์๋น์ค์ ์ฐ๊ฒฐํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ฏ๋ก https์ ๊ด๋ จ๋์ด์ผ ํฉ๋๋ค.
๋์์ด ๋์ จ๋์?
config.get('host') +req.originalUrl
์์ฒญ์ ์ ํํ URL์ ๋ฌด์์
๋๊น?
์ ๋ ์ด๊ฑฐ ๋ฐ๊ณ ์์ต๋๋ค. ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํธ์คํธ ์ด๋ฆ ํ์ธ์ ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋ด ์์ฒญ์ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
agentOptions: {
ca: fs.readFileSync('ca.cert.pem')
}
ignoreHostname์ ์ด๋ป๊ฒ ์ค์ ํฉ๋๊น?
rejectUnauthorized ๋ณ์๋ฅผ false๋ก ์ค์ ํด ๋ณด์ จ์ต๋๊น?
`````` ์์ฒญ({
URL: config.get('ํธ์คํธ') +req.originalUrl,
๋ฉ์๋: req.method,
๊ฑฐ๋ถ ๊ถํ ์์: ๊ฑฐ์ง
},
ํจ์(์ค๋ฅ, ์๋ต, ๋ณธ๋ฌธ) {
})```
``````
rejectUnauthorized: false
๊ฐ ์ฒซ ํ์ด์ง ๋ฌธ์ ์ด๋๊ฐ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
rejectUnauthorized: false
์ฌ์ฉํ๋ฉด ์๋ฒ ์ธ์ฆ์๋ฅผ ์๋ฝํ์ง ์์ต๋๊น? ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ์ ํจํ ํด๊ฒฐ์ฑ
์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ธ์ฆ์๊ฐ ์ ๋ขฐํ ์ ์๋ CA(๋ด ๊ฒฝ์ฐ์๋ ์์ฒด CA)์์ ์๋ช
ํ๋์ง ํ์ธํ์ฌ ์๋ฒ๋ฅผ ํ์ธํ๊ณ ์ถ์ต๋๋ค. ๋๋ ๋ชจ๋ ๊ฒ์ ์นจ๋ฌต์ํค๊ณ ๋ถ์ํ๊ฒ ๋ง๋ค๊ณ ์ถ์ง ์์ต๋๋ค.
์ด ๋ฌผ๊ฑด์ ๋์ฐํ๋ค
์๋ฒ ์ธ์ฆ์ CommonName
๋ฅผ ํด๋ผ์ด์ธํธ์ hostname
์ ์ผ์น์์ผ์ผ ํฉ๋๋ค.
์๋ฒ ์ธ์ฆ์ CommonName์ ํด๋ผ์ด์ธํธ์ ํธ์คํธ ์ด๋ฆ๊ณผ ์ผ์น์์ผ์ผ ํฉ๋๋ค.
๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น? ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ ์ธ์ฆ์์ ์กด์ฌํ๋ ์์ฒด ํธ์คํธ ์ด๋ฆ์ ์ ๊ฒฝ ์ฐ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ด๊ฒ์ ์๋ฒ์ ์ธ์ฆ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ฐ์ฌ ํด์
์ฐธ๊ณ ๋ก ์์ฒญ์ ์ ๋ฌํ๋ ๋์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. request({host: 'something.com'... headers: req.headers...
ํ์ต๋๋ค. ์ฒ์์๋ ํค๋์ host: 'localhost'
๊ฐ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ด ๋ฒ์ธ์ด์์ต๋๋ค. ๊ต์ฒดํ๋๋ฐ ์ด์ ์ ์ ํ์ธ๋ฉ๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ ธ๋ 6.10.3์ ์ฌ์ฉํ๊ณ 2.88์ ์์ฒญํ๋ ๋์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ค๋ฅ: ํธ์คํธ ์ด๋ฆ/IP๊ฐ ์ธ์ฆ์์ ๋์ฒด ์ด๋ฆ๊ณผ ์ผ์นํ์ง ์์ต๋๋ค: "ํธ์คํธ: https.๊ฐ ์ธ์ฆ์์ ๋์ฒด ์ด๋ฆ์ ์์ต๋๋ค:
๋ ธ๋ tls.js ์ฝ๋๊น์ง ์ถ์ ํ์ต๋๋ค. ์ด์ฉ์ง "https." ๋ ธ๋์ ๋ํ ์์ฒญ์ ์ํด ํธ์คํธ ์ด๋ฆ์ผ๋ก ์ ๋ฌ๋๊ณ ์์ต๋๋ค. rejectUnauthorized๋ฅผ false๋ก ์ค์ ํ๋ฉด ์ฝ๋๊ฐ ์๋ํฉ๋๋ค. ๊ทธ๋์ URL์ ์ฌ๋ฐ๋ฅธ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฌํ๊ณ ์์ต๋๋ค.
๋์ ๋๋ฉ์ธ์์ ์ ๊ณตํ๋ API ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐธ๊ณ ๋ก ์์ฒญ์ ์ ๋ฌํ๋ ๋์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
request({host: 'something.com'... headers: req.headers...
ํ์ต๋๋ค. ์ฒ์์๋ ํค๋์host: 'localhost'
๊ฐ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ซ์ง ๋ชปํ์ต๋๋ค. ์ด๊ฒ์ด ๋ฒ์ธ์ด์์ต๋๋ค. ๊ต์ฒดํ๋๋ฐ ์ด์ ์ ์ ํ์ธ๋ฉ๋๋ค.
๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. req.header๋ฅผ ์์ ํ๊ณ ํธ์คํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด ๋ฌผ๊ฑด์ ๋์ฐํ๋ค