nginx-เดจเตเดณเตเดณ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเดŸเต† เดœเดจเดฑเต‡เดทเตป, เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด…เดญเดฟเดตเดพเดฆเตเดฏเด™เตเด™เตพ, เดธเด–เดพเด•เตเด•เดณเต‡. เดŽเดจเตเดฑเต† เด•เต‹เด‚เดฌเดพเดฑเตเดฑเต เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดฎเดจเต‹เดนเดฐเด‚ nginx 2006 เดฎเตเดคเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดฑเต† เดญเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดตเตผเดทเด™เตเด™เดณเดฟเตฝ เดžเดพเตป เดงเดพเดฐเดพเดณเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเด‚ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เดณเตเด‚ เดถเต‡เด–เดฐเดฟเดšเตเดšเต. เดžเดพเตป nginx เดจเต† เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดชเตเดฐเดถเด‚เดธเดฟเดšเตเดšเต, เดŽเด™เตเด™เดจเต†เดฏเต‹ เดžเดพเตป เดนเดฌเดฟเตฝ เด’เดฐเต nginx เดนเดฌเต เด†เดฐเด‚เดญเดฟเดšเตเดšเดคเดพเดฏเดฟ เดคเต†เดณเดฟเดžเตเดžเต, m/
เดธเตเดนเตƒเดคเตเดคเตเด•เตเด•เตพ เด…เดตเตผเด•เตเด•เดพเดฏเดฟ เด’เดฐเต เดตเดฟเด•เดธเดจ เดซเดพเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเตป เดŽเดจเตเดจเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดŸเต, เดŽเดจเตเดฑเต† เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเตเด•เตพ เดตเดฒเดฟเดšเตเดšเดฟเดŸเตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เดฐเดธเด•เดฐเดฎเดพเดฏ เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดžเดพเตป เด“เตผเดคเตเดคเต. nginxconfig.io, เด‡เดคเต เดทเต†เตฝเดซเตเด•เดณเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เตพ เดšเดฟเดคเดฑเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดŽเดฒเตเดฒเดพเด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดžเดพเตป เดšเดฟเดจเตเดคเดฟเดšเตเดšเต, เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เดชเดพเดŸเดฟเดฒเตเดฒ? เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, wget/fetch/curl เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เดŽเดจเตเดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเดคเต†, เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‡เด•เตเด•เต zip เด†เตผเด•เตเด•เตˆเดตเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป nginxconfig เดตเดพเด—เตเดฆเดพเดจเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เดŽเดจเตเดจ เดตเดธเตเดคเตเดค เดŽเดจเตเดจเต† เดชเตเดฐเด•เต‹เดชเดฟเดชเตเดชเดฟเดšเตเดšเต. เดŽเดจเตเดคเต เดตเดฟเดกเตเดขเดฟเดคเตเดคเด‚, เดŽเดจเดฟเด•เตเด•เต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด‡เดคเต เดŽเดจเตเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด•เตบเดธเต‹เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต†เตผเดตเดฑเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดฆเต‡เดทเตเดฏเด‚ เดตเดจเตเดจเต, เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดฑเต† เดงเตˆเดฐเตเดฏเด‚ เด•เดพเดฃเดพเตป เดžเดพเตป เด—เดฟเดคเตเดคเดฌเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ, เด…เดคเต เด…เดคเดฟเดจเตเดฑเต† เดจเดพเตฝเด•เตเด•เดตเดฒเดฏเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเดšเตเดšเต, เด…เดคเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเดฟ เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ. เด…เดคเต เดฐเดธเด•เดฐเดฎเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดžเดพเตป เดŽเดดเตเดคเดฟเดฒเตเดฒ

nginx-เดจเตเดณเตเดณ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเดŸเต† เดœเดจเดฑเต‡เดทเตป, เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตƒเดทเตโ€ŒเดŸเดฟเดšเตเดš zip เด†เตผเด•เตเด•เตˆเดตเต Chrome เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดตเดฒเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเต เดžเดพเตป เดจเต‹เด•เตเด•เดฟ, เด…เดตเดฟเดŸเต† "เดฌเตเดฒเต‹เดฌเต:" เดŽเดจเตเดจเต เดคเตเดŸเด™เตเด™เตเดจเตเดจ เด’เดฐเต เดตเดฟเดฒเดพเดธเด‚ เดŽเดจเดฟเด•เตเด•เดพเดฏเดฟ เด•เดพเดคเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดถเตเดถเต‹. เดธเต‡เดตเดจเด‚ เดตเดดเดฟเดฏเดฟเตฝ เด’เดจเตเดจเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเต เด‡เดคเดฟเดจเด•เด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต js เด†เดฃเต. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, zip เด†เตผเด•เตเด•เตˆเดตเต, เด•เตเดฒเดฏเดจเตเดฑเต, เดฌเตเดฐเต—เดธเตผ, เดœเดพเดตเดพเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดŽเดจเตเดจเดฟเดตเดฏเดพเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดคเดพเดฃเต. เด†. เดชเดฆเตเดงเดคเดฟ เดŽเดจเตเดจเดคเดพเดฃเต เดญเด‚เด—เดฟ nginxconfig.io เด’เดฐเต html เดชเต‡เดœเดพเดฏเดฟ เดธเต‡เดตเต เดšเต†เดฏเตเดฏเดพเด‚, เดšเดฟเดฒเดคเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเด‚ narod.ru เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚) เด‡เดคเต เดตเดณเดฐเต† เดฐเดธเด•เดฐเดตเตเด‚ เดฐเดธเด•เดฐเดตเตเดฎเดพเดฏ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเดฃเต, เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดธเต†เตผเดตเดฑเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‡เดคเต เดตเดณเดฐเต† เด…เดธเต—เด•เดฐเตเดฏเดฎเดพเดฃเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟเดฏเดพเดฃเต. เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เด†เตผเด•เตเด•เตˆเดตเต เด’เดฐเต เดฌเตเดฐเต—เดธเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดคเต 2019-เตฝ nc... เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเดฃเต‹? เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดตเดดเดฟ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเตเดฎเดคเดฒ เดžเดพเตป เดธเตเดตเดฏเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ.
เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดซเต‹เตผเด•เตเด•เต เดšเต†เดฏเตเดค เดถเต‡เดทเด‚, เดŽเดจเตเดฑเต† เด“เดชเตเดทเดจเตเด•เตพ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ. เดชเดฟเดจเตเดจเดพเดฎเตเดชเตเดฑเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต†, เดถเตเดฆเตเดงเดฎเดพเดฏ เด’เดฐเต เดซเตเดฐเดฃเตเดŸเต เดŽเตปเดกเต เด†เดฏเดฟเดคเตเดคเดจเตเดจเต† เดชเตเดฐเตŠเดœเด•เตเดฑเตเดฑเต เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เดฃเดฎเต†เดจเตเดจ เดตเตเดฏเดตเดธเตเดฅเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเดฟเดšเดฒเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเต เดšเตเดฎเดคเดฒ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเด•เตเด•เดฟ. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดเดฑเตเดฑเดตเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚ เดจเต‹เดกเต‡เดœเตเด•เตพ เดตเดฒเดฟเดšเตเดšเดฟเดŸเตเด•เดฏเตเด‚ เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เดฒเดฟเด™เตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเดณเตเดณ เด’เดฐเต เด†เตผเด•เตเด•เตˆเดตเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดจเดฟเตผเดฌเดจเตเดงเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต.
เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ, เดงเดพเดฐเดพเดณเด‚ เด“เดชเตเดทเดจเตเด•เตพ เด‡เดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ เด’เดจเตเดจเต เดฎเดพเดคเตเดฐเด‚ เดฎเดจเดธเตเดธเดฟเตฝ เดตเดจเตเดจเต. เด’เดฐเต zip เด†เตผเด•เตเด•เตˆเดตเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดžเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเต†เตผเดตเตผ เด•เตบเดธเต‹เดณเดฟเดฒเต‡เด•เตเด•เต เดชเด•เตผเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดฒเดฟเด™เตเด•เต เดจเต‡เดŸเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.
เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดธเดฟเดชเตเดชเต เด†เตผเด•เตเด•เตˆเดตเดฟเดฒเต† เดจเดฟเดฐเดตเดงเดฟ เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เดซเดฏเดฒเตเด•เตพเด•เตเด•เต เด•เตเดฑเดšเตเดšเต เดญเดพเดฐเดฎเตเดฃเตเดŸเต, เด…เด•เตเดทเดฐเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด•เตเดฑเดšเตเดšเต เด•เดฟเดฒเต‹เดฌเตˆเดฑเตเดฑเตเด•เตพ. เด•เตบเดธเต‹เดณเดฟเตฝ เด•เดฎเดพเตปเดกเต เด‰เดณเตเดณ เดธเต†เตผเดตเดฑเดฟเตฝ เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดค zip เด†เตผเด•เตเด•เตˆเดตเดฟเตฝ เดจเดฟเดจเตเดจเต base64 เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดŽเดŸเตเดคเตเดคเต เดฌเดซเดฑเดฟเดฒเต‡เด•เตเด•เต เดŽเดฑเดฟเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด‚.

echo 'base64string' | base64 --decode > config.zip

เด‡เดคเต‡ zip เดซเดฏเตฝ เดจเดฎเตเด•เตเด•เต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚.

nginxconfig.io AngularJS-เตฝ เดŽเดดเตเดคเดฟเดฏเดคเต, เดฐเดšเดฏเดฟเดคเดพเดตเต เด’เดฐเต เดฑเดฟเดฏเดพเด•เตเดŸเต€เดตเต js เดซเตเดฐเต†เดฏเดฟเด‚เดตเตผเด•เตเด•เต เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดคเตเดฐ เด•เดฟเดฒเต‹เดฎเต€เดฑเตเดฑเตผ เด•เต‹เดกเต เด†เดตเดถเตเดฏเดฎเดพเดฏเดฟ เดตเดฐเตเดฎเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดŠเดนเดฟเด•เตเด•เดพเตป เดชเต‹เดฒเตเด‚ เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เด‡เดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดตเดฟเดทเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, VueJS-เตฝ เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดŽเดคเตเดฐเดคเตเดคเต‹เดณเด‚ เดฒเดณเดฟเดคเดตเตเด‚ เดฎเดจเต‹เดนเดฐเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดธเด™เตเด•เตฝเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเดฟเตฝ เด’เดฐเต zip เด†เตผเด•เตเด•เตˆเดตเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดฐเต€เดคเดฟ เดžเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเต:

$scope.downloadZip = function() {
	var zip = new JSZip();

	var sourceCodes = $window.document.querySelectorAll('main .file .code.source');

	for (var i = 0; i < sourceCodes.length; i++) {
		var sourceCode = sourceCodes[i];

		var name	= sourceCode.dataset.filename;
		var content	= sourceCode.children[0].children[0].innerText;

		if (!$scope.isSymlink() && name.match(/^sites-available//)) {
			name = name.replace(/^sites-available//, 'sites-enabled/');
		}

		zip.file(name, content);

		if (name.match(/^sites-available//)) {
			zip.file(name.replace(/^sites-available//, 'sites-enabled/'), '../' + name, {
				unixPermissions: parseInt('120755', 8),
			});
		}
	}

	zip.generateAsync({
		type: 'blob',
		platform: 'UNIX',
	}).then(function(content) {
		saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
	});

	gtag('event', $scope.getDomains().join(','), {
		event_category: 'download_zip',
	});
};

เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดฒเตเดฒเดพเด‚ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต jszip เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เดธเตเดฅเดพเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต เด’เดฐเต zip เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. zip เด†เตผเด•เตเด•เตˆเดตเต เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดถเต‡เดทเด‚, js เด…เดคเต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‡เด•เตเด•เต เดซเต€เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต FileSaver.js:

saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');

เดธเดฟเดชเตเดชเต เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดฌเตเดฒเต‹เดฌเต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเดพเดฃเต เด‰เดณเตเดณเดŸเด•เตเด•เด‚.

เดถเดฐเดฟ, เดžเดพเตป เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด…เดคเดฟเดจเดŸเตเดคเตเดคเดพเดฏเดฟ เดฎเดฑเตเดฑเตŠเดฐเต เดฌเดŸเตเดŸเตบ เดšเต‡เตผเด•เตเด•เตเด•เดฏเดพเดฃเต, เดžเดพเตป เด…เดคเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ zip เด†เตผเด•เตเด•เตˆเดตเต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด…เดŸเดฟเดธเตเดฅเดพเดจ64 เด•เต‹เดกเต เดจเต‡เดŸเตเด•. เด…เตฝเดชเตเดชเด‚ เดšเตเดฑเตเดฑเดฟเด•เตเด•เดฑเด™เตเด™เดฟเดฏ เดถเต‡เดทเด‚, เด’เดฐเต เดกเต—เตบเดฒเต‹เดกเตเดธเดฟเดชเตเดชเดฟเดจเต เดชเด•เดฐเด‚ เดŽเดจเดฟเด•เตเด•เต 2 เดฐเต€เดคเดฟเด•เตพ เดฒเดญเดฟเดšเตเดšเต:

$scope.downloadZip = function() {
	generateZip(function (content) {
		saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
	});

	gtag('event', $scope.getDomains().join(','), {
		event_category: 'download_zip',
	});
};
$scope.downloadBase64 = function() {
	generateZip(function (content) {
		var reader = new FileReader();
		reader.readAsDataURL(content);
		reader.onloadend = function() {
			var base64 = reader.result.replace(/^data:.+;base64,/, '');
			// ะฒ ะฟะตั€ะตะผะตะฝะฝะพะน base64 ะบะฐะบ ั€ะฐะท ะฝัƒะถะฝั‹ะน ะผะฝะต zip ะฐั€ั…ะธะฒ ะฒ ะฒะธะดะต base64 ัั‚ั€ะพะบะธ
		}
	});

	gtag('event', $scope.getDomains().join(','), {
		event_category: 'download_base64',
	});
};

เดจเดฟเด™เตเด™เตพ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดžเดพเตป zip เด†เตผเด•เตเด•เตˆเดตเดฟเดจเตเดฑเต† เดœเดจเดฑเต‡เดทเตป เดคเดจเตเดจเต† เดธเตเดตเด•เดพเดฐเตเดฏ เดœเดจเดฑเต‡เดฑเตเดฑเตเดธเดฟเดชเตเดชเต เดฐเต€เดคเดฟเดฏเดฟเดฒเต‡เด•เตเด•เตเด‚ เดฎเดฑเตเดฑเตเด‚ เดจเต€เด•เตเด•เดฟ. เด‡เดคเดพเดฃเต AngularJS, เดฐเดšเดฏเดฟเดคเดพเดตเต เดคเดจเตเดจเต† เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เดณเดฟเตฝ เด‰เดฑเดšเตเดšเตเดจเดฟเตฝเด•เตเด•เตเดจเตเดจเต, เดตเดพเด—เตเดฆเดพเดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด…เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฟเดฏเดฟเดฒเตเดฒ. เดกเตŒเตบเดฒเต‹เดกเตเดธเดฟเดชเตเดชเต เด‡เดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเดพเดฏเดฟ เดธเต‡เดตเตเด†เดธเต เดšเต†เดฏเตเดคเต, เดกเต—เตบเดฒเต‹เดกเตเดฌเต‡เดธเต64 เด…เดฒเตเดชเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏ เดŽเดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดšเต†เดฏเตเดคเต. เดžเด™เตเด™เตพ เด’เดฐเต เดซเดฏเตฝ เดฑเต€เดกเตผ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต html5-เตฝ เดžเด™เตเด™เตพเด•เตเด•เต เดตเดจเตเดจเต, เด…เดคเต เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดถเดฐเดฟเดฏเดพเดฃเต เด†เด•เตเดธเดธเต เดšเต†เดฏเตเดฏเดพเดตเตเดจเตเดจ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเต. เด’เดฐเต เดธเดฎเดฏเดคเตเดคเต, เด’เดฐเต เดฌเตเดณเต‹เดฌเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต Base64 เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดคเต เด’เดฐเต DataURL เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด‡เดคเต เดžเด™เตเด™เตพเด•เตเด•เต เด…เดคเตเดฐ เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ DataURL-เตฝ เดจเดฎเตเด•เตเด•เต เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเต เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดฌเดฟเด™เตเด•เต‹, เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดฌเดซเดฑเดฟเตฝ เด‡เดŸเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเตเดจเดพเด—เต เดŽเดจเตเดจเต† เด•เดพเดคเตเดคเดฟเดฐเตเดจเตเดจเต. เดฐเดšเดฏเดฟเดคเดพเดตเต เดชเดฆเตเดงเดคเดฟเดฏเดฟเตฝ เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เตเดฒเดฟเดชเตเดชเตเดฌเต‹เตผเดกเตเดœเต†เดธเต, เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดค เดตเดพเดšเด•เดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เดซเตเดฒเดพเดทเต เด’เดฌเตเดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเดฒเตเดฒเดพเดคเต† เด•เตเดฒเดฟเดชเตเดชเตเดฌเต‹เตผเดกเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เดกเดฟเดธเตเดชเตเดฒเต‡ เด‰เดณเตเดณ เด’เดฐเต เด˜เดŸเด•เดคเตเดคเดฟเตฝ เดŽเดจเตเดฑเต† base64 เด‡เดŸเดพเตป เดžเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต: เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ;, เดŽเดจเตเดจเดพเตฝ เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เด…เดคเต เด•เตเดฒเดฟเดชเตเดชเตเดฌเต‹เตผเดกเดฟเตฝ เด‡เดŸเดพเตป เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ เด•เดพเดฐเดฃเด‚ เดตเต‡เตผเดชเดฟเดฐเดฟเดฏเตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด…เดคเดฟเดจเดพเตฝ, เดชเตเดฐเดฆเตผเดถเดจเดคเตเดคเดฟเดจเต เดชเด•เดฐเด‚: เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ; เดžเดพเดจเต เดšเต†เดฏเตเดคเต

position: absolute;
z-index: -1;
opacity: 0;

เด•เดพเดดเตเดšเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด˜เดŸเด•เด‚ เดฎเดฑเดฏเตโ€Œเด•เตเด•เดพเดจเตเด‚ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด…เดคเต เดชเต‡เดœเดฟเตฝ เด‡เดŸเดพเดจเตเด‚ เด‡เดคเต เดŽเดจเตเดจเต† เด…เดจเตเดตเดฆเดฟเดšเตเดšเต. เดตเต‹เดฏเตโ€Œเดฒ, เดŸเดพเดธเตเด•เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ, เดžเดพเตป เดŽเดจเตเดฑเต† เดฌเดŸเตเดŸเดฃเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดคเดชเตเดชเต‹เตพ, เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดตเดฐเดฟ เดฌเดซเดฑเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดšเตเดšเต:

echo 'base64string' | base64 --decode > config.zip

เด…เดคเต เดžเดพเตป เดธเต†เตผเดตเดฑเดฟเดฒเต† เด•เตบเดธเต‹เดณเดฟเตฝ เด’เดŸเตเดŸเดฟเดšเตเดšเต, เด‰เดŸเตป เดคเดจเตเดจเต† เดŽเดฒเตเดฒเดพ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเดฎเตเดณเตเดณ เด’เดฐเต zip เด†เตผเด•เตเด•เตˆเดตเต เดฒเดญเดฟเดšเตเดšเต.
เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดžเดพเตป เดฐเดšเดฏเดฟเดคเดพเดตเดฟเดจเต เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด…เดฏเดšเตเดšเต, เด•เดพเดฐเดฃเด‚... เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเดœเต€เดตเดตเตเด‚ เดธเดœเต€เดตเดตเตเดฎเดพเดฃเต, เดฐเดšเดฏเดฟเดคเดพเดตเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เตพ เด•เดพเดฃเดพเดจเตเด‚ เดŽเดจเตเดฑเต† เดธเตเดตเดจเตเดคเด‚ เดฌเดŸเตเดŸเตบ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต) เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดตเตผเด•เตเด•เต, เด‡เดคเต เด‡เดคเดพ. เดŽเดจเตเดฑเต† เดจเดพเตฝเด•เตเด•เดตเดฒ เดชเดฆเตเดงเดคเดฟเดฏเตเด‚ เดžเดพเดจเตเด‚ เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจ, เดžเดพเตป เดคเดฟเดฐเตเดคเตเดคเดฟเดฏเดคเต/เดšเต‡เตผเดคเตเดคเดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดตเดฟเดŸเต† เด•เดพเดฃเดพเดจเดพเด•เตเด‚.
เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดตเดฟเด•เดธเดจเด‚ เด†เดถเด‚เดธเดฟเด•เตเด•เตเดจเตเดจเต)

nginx-เดจเตเดณเตเดณ เด•เต‹เตบเดซเดฟเด—เดฑเตเด•เดณเตเดŸเต† เดœเดจเดฑเต‡เดทเตป, เด’เดฐเต เดชเตเตพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดšเดฐเดฟเดคเตเดฐเด‚

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•