Product-apim: ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋ฌธ์ œ ๋’ค์— WSO2 API ๊ด€๋ฆฌ์ž ์„ค์ •

์— ๋งŒ๋“  2019๋…„ 11์›” 12์ผ  ยท  39์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: wso2/product-apim

๋‚ด๊ฐ€ ์„ค์ •ํ•œ ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ hostname ๋ฐ transport.https.properties ๋Š” deployment.toml ํŒŒ์ผ์— ์žˆ์Šต๋‹ˆ๋‹ค.
์•„๋ž˜ ๋ฌธ์„œ์™€ ์ •ํ™•ํžˆ ๊ฐ™์€ Nginx๋ฅผ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ
ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๊ฒŒ์‹œ์ž ํฌํ„ธ์„ ์—ด๋ ค๊ณ  ์‹œ๋„ํ•  ๋•Œ ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•˜๊ณ  ๋กœ๊ทธ์ธํ•œ ํ›„ ์˜ฌ๋ฐ”๋ฅธ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ด URL์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. HTTP-500 ์˜ค๋ฅ˜๊ฐ€ ์ˆ˜์‹ ๋˜๋ฏ€๋กœ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธํ•˜๋ฉด API ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๊ณ  ๋‚ด๋ถ€ ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋ฉฐ ์ด ๋ฃจํ”„๋Š” ์˜์›ํžˆ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค!

๋‚ด๊ฐ€ ๋ฌด์—‡์„ ๋†“์น˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

Affecte3.0.0 TypQuestion

๋ชจ๋“  39 ๋Œ“๊ธ€

์—ฌ๊ธฐ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š” @amir-dh,
์—์„œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ํ™œ์„ฑํ™”ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
wso2am3.0.0/repository/deployment/server/jaggeryapps/publisher/site/public/theme/ defaultTheme.js

์ƒ์ˆ˜ REVERSE_PROXY = {
ํ™œ์„ฑํ™”๋จ: ์‚ฌ์‹ค,
์ถœ์ฒ˜: 'api.am.wso2.com',
};

@isharac
๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค

์ƒ์ˆ˜ REVERSE_PROXY = {
ํ™œ์„ฑํ™”๋จ: ์‚ฌ์‹ค,
์ถœ์ฒ˜: ' ๋งˆ์ด๋„๋ฉ”์ธ ',
};

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ์ž ํฌํ„ธ์„ ์—ด๋ฉด invalid_callback ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@amir-dh,
๊ทธ์— ๋”ฐ๋ผ ์ฝœ๋ฐฑ URL์„ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ฐฐํฌ์ž…๋‹ˆ๊นŒ?
์šฐ๋ฆฌ๋Š” ์ด๋ฏธ NGINX ์ˆ˜์‹ ์—์„œ ๋ฌธ์ œ๋ฅผ ์‹๋ณ„ํ–ˆ์ง€๋งŒ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ฐฐํฌ์ธ ๊ฒฝ์šฐ ์ฝœ๋ฐฑ URL์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ๋ธ”๋กœ๊ทธ[1]๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ๋”ฐ๋ผ admin_publisher ๋ฐ admin_store SP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝœ๋ฐฑ URL์„ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.

๋ถˆํŽธ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ ๋ฌธ์„œ๋Š” WIP์— ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณง ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

[1] https://ishara-cooray.blogspot.com/2019/11/how-to-change-devportal-to-different.html

@isharac
์ฝœ๋ฐฑ URL์„ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ ํ›„์— ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ Nginx ๋ฐ ApiM 3.0์„ ์‹คํ–‰ํ•˜๊ณ  ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ฝœ๋ฐฑ URL์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋„๋ฉ”์ธ์ด ์„ค์ •๋œ ๊ฒŒ์‹œ์ž ํฌํ„ธ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ƒ˜ํ”Œ API๋ฅผ ๋ฐฐํฌํ•˜๊ณ  "devportal์—์„œ ๋ณด๊ธฐ" ๋˜๋Š” "๋กœ๊ทธ์ธ"์„ ํด๋ฆญํ•˜๋ฉด ํŽ˜์ด์ง€ URL์€ localhost:9443 ์ž…๋‹ˆ๋‹ค.

@amir-dh
deployment.toml์—์„œ devportal URL์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒํ•˜๋ ค๋ฉด ์•„๋ž˜ ๊ตฌ์„ฑ์„ ํ™œ์„ฑํ™”ํ•˜์‹ญ์‹œ์˜ค./repository/conf/deployment.toml ๋ฐ ์˜ฌ๋ฐ”๋ฅธ devportal url์„ url๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

#์„ ์ œ๊ฑฐํ•˜์—ฌ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[apim.devportal]

url = " https://localhost :${mgt.transport.https.port}/devportal"

@isharac
๋‚˜๋Š” ๋‹ค์Œ ์ค„์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

[apim.devportal]
url = " https://MyDomain/devportal "

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ƒ์ˆ˜ REVERSE_PROXY = {
ํ™œ์„ฑํ™”๋จ: ์‚ฌ์‹ค,
์ถœ์ฒ˜: '๋‚ด ๋„๋ฉ”์ธ',
};

๊ทธ๋Ÿฌ๋‚˜ ๋กœ๊ทธ์ธ ๋ฐ ๋กœ๊ทธ์•„์›ƒ ํŽ˜์ด์ง€ URL์€ localhost ์ž…๋‹ˆ๋‹ค. ๊ฒŒ์‹œ์ž ๋ฐ devportal์—์„œ

@amir-dh
url์„ ํฌํ•จํ•˜์—ฌ ์œ„ ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฒจ๋ถ€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋˜ํ•œ devportal SP(admin_admin_store)์˜ ์ฝœ๋ฐฑ URL?

@isharac

  1. devportal ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

click-the-sign-in

  1. ์ด URL์€ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€(๊ฒŒ์‹œ์ž ๋ฐ devportal)์ž…๋‹ˆ๋‹ค.

localhost-devportal

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ MyDomain์„ " localhost:9443 "์œผ๋กœ ๋ฐ”๊พธ

ํ•˜์ง€๋งŒ ์ฝœ๋ฐฑ URL admin_admin_store ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด invalid_callback ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” mir-dh ์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

api-manager.xml์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ URL์„ ์„ค์ •ํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ๋ฎ์–ด์“ฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์•ˆ ์ธ์‚ฌ,

์ผ๋ณธ

@amir-dh
์Šคํฌ๋ฆฐ์ƒท ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
ํฌํŠธ ์˜คํ”„์…‹ 2๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ณต์œ  ๋ถ€ํƒ๋“œ๋ ค๋„ ๋ ๊นŒ์š”

/repository/deployment/jaggeryapps/devportal/site/public/theme/settings.js
์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ?

ํ•œํŽธ, ๋‚˜๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์‹œ๋„ํ•˜๊ณ  Nginx๋กœ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋‹จ๊ณ„๋Š” ๋ธ”๋กœ๊ทธ [1]์— ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ €ํฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

@JUANPARBELAEZ
๊ฐ™์€ ๋ธ”๋กœ๊ทธ[1]์—์„œ ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

[1] https://ishara-cooray.blogspot.com/2019/11/how-to-change-default-hostname-of-wso2.html

@isharac
์•ˆ๋…•ํ•˜์„ธ์š”,
์›์‹œ APIM์„ ์‹คํ–‰ํ•˜๊ณ  ์—ฌ๊ธฐ ์—์„œ ๊ตฌ์„ฑ์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค์ •ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ฒŒ์‹œ์ž ๋ฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์˜ ์Šคํ† ์–ด ์˜ค๋ฅ˜๋Š” 500(์ด ํŽ˜์ด์ง€๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Œ), ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„ ํƒ„์†Œ ์˜ค๋ฅ˜๋Š” 403(๊ธˆ์ง€)์ž…๋‹ˆ๋‹ค.
wso2carbon.log๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ์ž ๋ฐ ์ƒ์  ์˜ค๋ฅ˜๋Š” ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋˜์—ˆ์œผ๋ฉฐ ํƒ„์†Œ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@amir-dh
๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ๋ถ„์„์„ ์œ„ํ•ด ์•„๋ž˜ ํŒŒ์ผ์„ ๊ณต์œ ํ•˜์‹ญ์‹œ์˜ค.

  1. wso2carbon.log
    2.wso2am3.0.0/repository/deployment/server/jaggeryapps/publisher/site/public/theme/defaultTheme.js
  2. wso2am3.0.0/repository/deployment/server/jaggeryapps/devportal/site/public/theme/settings.js
  3. nginx.conf
  4. wso2am3.0.0/repository/deployment.toml

@isharac

wso2.zip
์—ฌ๊ธฐ ์žˆ์–ด์š”.

@amir-dh ,
๋Šฆ๊ฒŒ ๋Œ์•„์™€์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
์ œ๊ณต๋œ ๊ตฌ์„ฑ์€ ๊ดœ์ฐฎ์•„ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์˜ [1]์—์„œ ํ™•์ธ๋œ ๋ฌธ์ œ๋กœ ์ธํ•ด ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ตœ์‹  ๋ฆด๋ฆฌ์Šค WSO2AM-3.1.0-M2 ์—์„œ ๋‹ค์‹œ ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

[1] https://github.com/wso2/product-apim/issues/6817

APIM-3.1.0-M 2๋ถ€ํ„ฐ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์•„๋ž˜ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. deployment.toml์—์„œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ณ€๊ฒฝ
    [์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ]ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ = "api.am.wso2.com"

  2. ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ
    ์„œ๋ฒ„ {
    ๋“ฃ๊ธฐ 443 SSL;
    server_name api.am.wso2.com;
    proxy_set_header X-Forwarded-Port 443;
    ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
    ์œ„์น˜ / {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass https://api.am.wso2.com :9443;
    }
    }

  3. /etc/hosts์— ํ˜ธ์ŠคํŠธ ๋งคํ•‘ ์ถ”๊ฐ€
    127.0.0.1 .

  4. ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๊ด€๋ฆฌ ์ฝ˜์†”์— ๋กœ๊ทธ์ธํ•˜์—ฌ ์ฝœ๋ฐฑ URL์„ ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค.
    https://api.am.wso2.com :9443/carbon/

์„œ๋น„์Šค ์ œ๊ณต์—…์ฒด๋กœ ์ด๋™ํ•˜์—ฌ admin_admin_publisher๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.
๊ฒŒ์‹œ์ž์˜ ์ฝœ๋ฐฑ URL
regexp=(https://api.am.wso2.com:9443/publisher/services/auth/callback/login|https://api.am.wso2.com:9443/publisher/services/auth/callback/logout )

@isharac
APIM-3.1.0-M2๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  deployment.toml ํŒŒ์ผ์—์„œ hostname ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  nginx ๊ตฌ์„ฑ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
์„œ๋ฒ„ {
๋“ฃ๊ธฐ 443 SSL;
์„œ๋ฒ„ ์ด๋ฆ„ myDomain ;
proxy_set_header X-Forwarded-Port 443;
ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
์œ„์น˜ / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https:// myDomain :9443;
}
}

ํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
publisher ํ˜ธ์ถœ๋˜๋ฉด ์—ฌ๊ธฐ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ํฌํŠธ๊ฐ€ ์žˆ๋Š” MyDomain์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์—ญ ํ”„๋ก์‹œ URI๊ฐ€ ์•„๋‹ˆ๋ผ https://mydomain.com/publisher ์—์„œ https://mydomain.com:9445/oauth2/..... ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. mydomain ๋’ค์— ์˜ค๋Š” ํฌํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋Š” ๋กœ๊ทธ์ธํ•˜๋ ค๋Š” devportal ์—์„œ๋„ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ ํ›„ Management Console ์˜ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์—์„œ ์ด URL๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๊ณ  ์˜ค๋ฅ˜ 403(๊ธˆ์ง€๋จ)์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ณด๋‚ด์ฃผ์‹  ๋ฌธ์ œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  features/apimgt/org.wso2.carbon.apimgt.publisher.feature/src/main/resources/publisher/site/public/theme/defaultTheme.js ๋Œ€ํ•ด:

reverseProxy: {
            auto: true,
            forwardedHeader: 'x-forwarded-for',
            loopbackHost: 'localhost',
            defaultHTTPSPort: 9443,
        },

๋ฌธ์ œ [1]์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ [2]์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

[1] (https://github.com/wso2/carbon-apimgt/pull/7842/files/88efcf71b4aa4b8bf5511db8fc91655ba7969aa8?utf8=%E2%9C%93&diff=split&w=1)

[2] (https://github.com/wso2/carbon-apimgt/pull/7858/files)

์•ˆ๋…•ํ•˜์„ธ์š” @amir-dh

๋ฐฐํฌ.toml์—๋„ ํ”„๋ก์‹œ ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ตฌ์„ฑ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค./repository/conf/deployment.toml
[transport.https.properties]
ํ”„๋ก์‹œ ํฌํŠธ = 443

@isharac
๋ฐฐํฌ ํŒŒ์ผ์— ํ”„๋ก์‹œ ํฌํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://mydomain.com/ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ ๊ฒŒ์‹œ์ž ํฌํ„ธ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋‚œ ํ˜ธ์ถœํ•˜๋ฉด https://mydomain.com/publisher ๊ฐ€๋กœ ๋ฆฌ๋””๋ ‰์…˜ https://**myIP**/publisher ๋‚˜๋Š”์ด ๋ฉ”์‹œ์ง€๋ฅผ ์–ป์„ This site canโ€™t be reached . devportal ๋ฐ carbon URL์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

@amir-dh
์ œ ๋Œ“๊ธ€์„ ์ฐพ์•„์ฃผ์„ธ์š”.

'' https://mydomain.com/ ์„ ํ˜ธ์ถœํ–ˆ๋Š”๋ฐ ๊ฒŒ์‹œ์ž ํฌํ„ธ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.''
์ด๊ฒƒ์€ ๊ธฐ๋ณธ ์ผ€์ด์Šค์ž…๋‹ˆ๋‹ค.

IP๋กœ ๋ฆฌ๋””๋ ‰์…˜์ด ์•ฝ๊ฐ„ ์ด์ƒํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.
์ถ”๊ฐ€ ๋ถ„์„์„ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ € ์ฝ˜์†”์—์„œ ๋‹ค์šด๋กœ๋“œํ•œ nginx.conf ๋ฐ HAR ํŒŒ์ผ์„ ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํฌ๋กฌ์—์„œ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Screen Shot 2019-11-28 at 11 04 14 AM

myconf.zip
์—ฌ๊ธฐ ์žˆ์–ด์š”

@amir-dh
๊ตฌ์„ฑ์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

nginx.conf์—์„œ proxyPass๋Š” IP๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ๋„๋ฉ”์ธ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ํ™•์ธํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

proxy_pass https://myDomain :9443;

๊ฐ์‚ฌ ํ•ด์š”.

์•ˆ๋…•ํ•˜์„ธ์š” @amir-dh ,

์ง€์ •๋œ HAR์—์„œ IP ์ฃผ์†Œ๋กœ์˜ ๋ฆฌ๋””๋ ‰์…˜์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋กœ ์ธํ•ด ์š”์ฒญ์ด ์‹คํŒจํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

invalid_callback
--
Registered callback does not match with the provided url.

๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋Š” ์•„๋งˆ๋„ admin_apim_publisher ์ œ๊ณต๋œ ์ฝœ๋ฐฑ URL์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

image

์ •๊ทœ์‹์— ๋‹ค์Œ URL์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://mydomain.com/publisher/services/auth/callback/login

@isharac @tmkasun
๋„์™€ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋‹น์‹ ์˜ ํŒ์œผ๋กœ ๋‚ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” ๊ตฌ์„ฑ ์•„๋ž˜์— ์„ค์ • :

  1. ๋ฐฐํฌ ํŒŒ์ผ ์—์„œ hostname ์„ mydomain ๋กœ ๋ณ€๊ฒฝ
  2. Nginx ๊ตฌ์„ฑ ์„ค์ •:
server {
listen 443 ssl;
server_name myDomain;
proxy_set_header X-Forwarded-Port 443;
ssl_certificate /usr/local/etc/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/etc/nginx/ssl/nginx.key;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://myDomain:9443;
}
}
  1. ๋ฐฐํฌ ํŒŒ์ผ์— ํ”„๋ก์‹œ ํฌํŠธ ์ถ”๊ฐ€:
    [transport.https.properties]
    ํ”„๋ก์‹œ ํฌํŠธ = 443

  2. ๋ฐฐํฌ ํŒŒ์ผ์˜ devportal URL ๋ฐ gwdevportal URL์„ localhost ์—์„œ mydomain.com์œผ๋กœ ๋ณ€๊ฒฝ ํ•˜๊ณ  ํฌํŠธ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

  3. ์ฝ˜์†” ๊ด€๋ฆฌ์—์„œ ์ฝœ๋ฐฑ URL์„ ๋ณ€๊ฒฝํ•˜๊ณ  ํฌํŠธ๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค.

@amir-dh
๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค. :)

@isharac
๋‚˜๋Š” ๊ตฌ์„ฑ๋œ ๋ชจ๋“  ๊ฒƒ์„ ๋”ฐ๋ž๋‹ค
๊ทธ๋ฆฌ๊ณ  " TypeError:Cannot read property "forwardedHeader" from undefined .... "๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
$HOST/devportal/apis์—์„œ ํ•œ์ˆจ์„ ์‰ฌ๋ ค๊ณ  ํ•  ๋•Œ
ํŽ˜์ด์ง€๋Š” $HOST/devportal/services/configs๋กœ ๋ฆฌ๋””๋ ‰์…˜๋ฉ๋‹ˆ๋‹ค.

์˜๊ฒฌ ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ ?
๋‹ต๋ณ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค

ํ™˜๊ฒฝ

nginx ๋ฒ„์ „: nginx/1.10.3
WSO2 APIM 3.1.0 M3

TID: [-1234] [devportal] [2019-12-03 02:19:55,194] ์˜ค๋ฅ˜ {org.jaggeryjs.jaggery.core.manager.WebAppManager} - org.mozilla.javascript.EcmaError: TypeError: "์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Œ" ์ •์˜๋˜์ง€ ์•Š์€(/devportal/services/login/idp.jag#28) org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.EcmaError: TypeError: ์ •์˜๋˜์ง€ ์•Š์€(/devportal/์—์„œ "forwardedHeader" ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค/๋กœ๊ทธ์ธ/idp.jag#28)
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:587)
org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:289)
org.jaggeryjs.jaggery.core.manager.WebAppManager.exec(WebAppManager.java:589)
org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:508)
org.jaggeryjs.jaggery.core.JaggeryServlet.doGet(JaggeryServlet.java:24)์—์„œ
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)์—์„œ
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)์—์„œ
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:352)
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80)
org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:100)
org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:74)
org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:49)
org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:146)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
org.wso2.carbon.tomcat.ext.valves.RequestCorrelationIdValve.invoke(RequestCorrelationIdValve.java:116)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
org.apache.catalina.connector.CoyoteAdapter.service์—์„œ(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)์—์„œ
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)์—์„œ
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)์—์„œ
์›์ธ: org.mozilla.javascript.EcmaError: TypeError: ์ •์˜๋˜์ง€ ์•Š์€(/devportal/services/login/idp.jag#28)์—์„œ "forwardedHeader" ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
org.mozilla.javascript.ScriptRuntime.constructError์—์„œ(ScriptRuntime.java:3687)
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)
org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693)
org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712)
org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3725)
org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1483)
org.jaggeryjs.rhino.devportal.services.login.c0._c_script_0(/devportal/services/login/idp.jag:28)
org.jaggeryjs.rhino.devportal.services.login.c0.call(/devportal/services/login/idp.jag)์—์„œ
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
org.jaggeryjs.rhino.devportal.services.login.c0.call(/devportal/services/login/idp.jag)์—์„œ
org.jaggeryjs.rhino.devportal.services.login.c0.exec(/devportal/services/login/idp.jag)์—์„œ
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:583)
... 50๊ฐœ ๋”

์•ˆ๋…•ํ•˜์„ธ์š” @loeb-ift

์‚ฌ์šฉ ์ค‘์ธ APIM ๋ฒ„์ „์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
devportal/site/public/theme/settings.js๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @isharac
๋‹ค์Œ๊ณผ ๊ฐ™์ด
root@wso2am-313 :/tmp/20191203# vi /opt/wso2am-3.1.0-m3/repository/deployment/server/jaggeryapps/devportal/site/public/theme/settings.js

const ์„ค์ • = {
์•ฑ: {
์ปจํ…์ŠคํŠธ: '/devportal',
๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ: {
ํ™œ์„ฑํ™”๋จ: ์‚ฌ์‹ค,
์ถœ์ฒ˜: ' https://MYHOST ',
},
},
๋ถ€์—ฌ ์œ ํ˜•: {
Authorization_code: '์ฝ”๋“œ',
์•”์‹œ์ : '์•”์‹œ์ ',
refresh_token: '์ƒˆ๋กœ ๊ณ ์นจ ํ† ํฐ',
๋น„๋ฐ€๋ฒˆํ˜ธ: '๋น„๋ฐ€๋ฒˆํ˜ธ',
' iwa:ntlm ': 'IWA-NTLM',
client_credentials: 'ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช…',
' urn:ietf : params:oauth :grant- ์œ ํ˜•:saml2-bearer ': 'SAML2',
' urn:ietf : params:oauth :grant- type:jwt-bearer ': 'JWT',
kerberos: 'Kerberos',
},
};

๋„ˆ๋ฌด ๋งŽ์ด

@loeb-ift
์ด ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜์…จ์Šต๋‹ˆ๊นŒ?

์•ฑ json์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

app: {
    context: '/devportal',
    customUrl: {
        enabled: false,
        forwardedHeader: 'X-Forwarded-For',
    },
    origin: {
        host: 'localhost',
    },
},

๊ธฐ๋ณธ ๊ตฌ์„ฑ ํŒŒ์ผ์€ [1]์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
[1] https://github.com/wso2/carbon-apimgt/blob/v6.5.399/features/apimgt/org.wso2.carbon.apimgt.store.feature/src/main/resources/devportal/site/public /ํ…Œ๋งˆ/์„ค์ •.js

[https://ishara-cooray.blogspot.com/2019/11/how-to-change-default-hostname-of-wso2.html] ๋ฌธ์„œ ์ฐธ์กฐ

๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ  config /devportal/site/public/theme/settings.js๋ฅผ ํŽธ์ง‘ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.
' forwardedHeader: 'X-Forwarded-For''๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค.'
๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ž‘ํ’ˆ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค!

์ด์ œ setting.js๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

`const ์„ค์ • = {
์•ฑ: {
์ปจํ…์ŠคํŠธ: '/devportal',
๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ: {
ํ™œ์„ฑํ™”๋จ: ์‚ฌ์‹ค,
์ถœ์ฒ˜: 'https://$MYHOST',
forwardedHeader: 'X-Forwarded-For',
},
},
};

grantTypes: {
    authorization_code: 'Code',
    implicit: 'Implicit',
    refresh_token: 'Refresh Token',
    password: 'Password',
    'iwa:ntlm': 'IWA-NTLM',
    client_credentials: 'Client Credentials',
    'urn:ietf:params:oauth:grant-type:saml2-bearer': 'SAML2',
    'urn:ietf:params:oauth:grant-type:jwt-bearer': 'JWT',
    kerberos: 'Kerberos',
 },

};

๋ธ”๋กœ๊ทธ๊ฐ€ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ๊ณผํ•˜์ง€๋งŒ ๋ธ”๋กœ๊ทธ์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด APIM 3.0.0์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
APIM 3.1.0-m2๋ถ€ํ„ฐ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ตœ์‹  ๊ตฌ์„ฑ์œผ๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

APIM 3.1.0-m3์—์„œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ฃผ์„[1]์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

[1] https://github.com/wso2/product-apim/issues/6808#issuecomment -559584220

@isharac
๋‹น์‹ ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
์‚ฌ์‹ค ๋ธ”๋กœ๊ทธ๊ฐ€ ๋„์›€์ด ๋งŽ์ด ๋˜์—ˆ์–ด์š”
ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ์ ์„ ๋†“์น˜๊ณ 
์„ค์น˜ ์š”์•ฝ

OS: ๋ฐ๋น„์•ˆ 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/๋ฆฌ๋ˆ…์Šค
nginx ๋ฒ„์ „: nginx/1.10.3(WSO2 3.1.0 M3 ํฌํ•จ)
์„ค์น˜ ๋‹จ๊ณ„.
[ https://github.com/wso2/product-apim/issues/6808#issuecomment -559584220 ]

์ง€๊ธˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
nginx ํ”„๋ก ํŒ…(WSO2 APIM 3.0)๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒŒ์‹œ์ž ๋˜๋Š” devportal์„ ์—ด๋ ค๊ณ  ํ•˜๋ฉด ๋‚ด ์ฝ˜์†”์— ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
-์˜ค๋ฅ˜: ์˜ค๋ฅ˜: ๋ถ€๋ถ„ ํ† ํฐ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ต๋ช… ๋ณด๊ธฐ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ† ํฐ ์ƒˆ๋กœ๊ณ ์นจ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
/admin ๋ฐ /carbon์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

nginx ๋ฒ„์ „: ํ”„๋ก ํŒ… ์„œ๋ฒ„์˜ nginx/1.16.1
WSO2 - APIM์ด ๋‹ค๋ฅธ ์„œ๋ฒ„๋ณด๋‹ค ๋†’์Œ(CentOS Linux ๋ฆด๋ฆฌ์Šค 7.7.1908)
rpm์œผ๋กœ WSO2 APIM 3.0 ์„ค์น˜(WSO2 ์‚ฌ์ดํŠธ์˜ ํ•€)

๋„คํŠธ์›Œํฌ ํ๋ฆ„ 9443,443 ๋ฐ 8243์ด ์—ด๋ ค ์žˆ๊ณ  Nginx Fronted ๋ฐ WSO2 APIM 3.0 ์„œ๋ฒ„

๋‹น์‹ ์ด ๋‚˜๋ฅผ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ, ๋‚˜๋Š” ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…๋„ ์—†์Šต๋‹ˆ๋‹ค :(

๊ฐ์‚ฌ ํ•ด์š”

์ƒ˜

์•ˆ๋…•ํ•˜์„ธ์š” @SamWso2 ,

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๋Ÿฌํ•œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

image

์ด๊ฒƒ์€ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์‡„๋œ ์ผ๋ถ€ ์ •๋ณด ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ์ด ๋กœ๊ทธ๋Š” ์ผ๋ฐ˜ ์„ค์ •์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด HTTP ์•„์นด์ด๋ธŒ(HAR) ํŒŒ์ผ์„ ์ œ๊ณตํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ณ„์† ๋กœ๊ทธ์ธ ๋ฃจํ”„ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒฝํ—˜ํ–ˆ๋‹ค๋ฉด @isharac ์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋”ฐ๋ผ APIM 3.0.0์—์„œ ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://ishara-cooray.blogspot.com/2019/11/how-to-change-devportal-to-different.html

์•ˆ๋…•ํ•˜์„ธ์š” tmkasun๋‹˜

๋‚ด๋ถ€์—์„œ /devportan ๋ฐ /publisher์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์™ธ๋ถ€์—์„œ๋Š” ๊ณต๊ฐœ URL(NGINX์— ๊ตฌ์„ฑ๋จ)์„ ์‚ฌ์šฉํ•˜๊ณ  Carbon ๋ฐ ๊ด€๋ฆฌ ํฌํ„ธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
devportal URL์—๋„ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฃจํ”„๊ฐ€ ..... ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— NGINcX๊ฐ€ ํฌํ•จ๋œ WSO2 APIM 2.6์ด ์žˆ์œผ๋ฉฐ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

Squid ํ”„๋ก์‹œ(์•ž์— Nginx ์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐํ•˜์ง€๋งŒ WSO2 ๊ตฌ์„ฑ์—์„œ ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
wSO2 APIM 3.0์—์„œ ์ธํ„ฐ๋„ท์ด ๋‚˜๊ฐ€๋„๋ก ํ”„๋ก์‹œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://apim.docs.wso2.com/en/latest/install-and-setup/deploying-wso2-api-manager/configuring-the-proxy-server-and-the-load-balancer/#step -2 -configure-the-load-balancerreverse-proxy-server

๋‚˜๋Š” ๋„ฃ์—ˆ๋‹ค

ํ•˜์ง€๋งŒ ์•„๋ž˜์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

TID: [-1234] [devportal] [2020-03-10 10:45:20,910] ์˜ค๋ฅ˜ {org.jaggeryjs.jaggery.core.manager.WebAppManager} - org.mozilla.javascript.WrappedException: ๋ž˜ํ•‘๋œ org.jaggeryjs.scriptengine .exceptions.ScriptException: java.net.ConnectException: ์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋จ(์—ฐ๊ฒฐ์ด ๊ฑฐ๋ถ€๋จ)(<>/META-INF/scripts/http.js#220) org.jaggeryjs.scriptengine.exceptions.ScriptException: org.mozilla.javascript.WrappedException: ๋ž˜ํ•‘๋œ org.jaggeryjs.scriptengine.exceptions.ScriptException: java.net.ConnectException: ์—ฐ๊ฒฐ ๊ฑฐ๋ถ€๋จ (์—ฐ๊ฒฐ ๊ฑฐ๋ถ€๋จ) (<>/META-INF/scripts/http.js#220)

nginx ์„œ๋ฒ„๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์‚ฌ์šฉ = OK
ํ•˜์ง€๋งŒ ์ธํ„ฐ๋„ท์— ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•ด ์˜ค์ง•์–ด ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

wSO2 APIM 3.0 ๊ตฌ์„ฑ์—์„œ ํ”„๋ก์‹œ ์˜ค์ง•์–ด๊ฐ€ ์ธํ„ฐ๋„ท์— ๋‚˜๊ฐ€๋„๋ก ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? (NGINX ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ squi ํ”„๋ก์‹œ)

๊ฐ์‚ฌ ํ•ด์š”

์•ˆ๋…•ํ•˜์„ธ์š” @isharac
wso2am 3.1.0์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. nginx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ wso2๋ฅผ ๋ผ์šฐํŒ…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ pory ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ wso2 deployment.toml์„ ๊ตฌ์„ฑํ•˜๊ณ  nginx๋ฅผ ๊ตฌ์„ฑํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

Nginx๋Š” ํ•˜๋‚˜์˜ VM์—์„œ ํ˜ธ์ŠคํŒ…๋˜๊ณ  wso2๋Š” ๋‹ค๋ฅธ VM์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰