nginx เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‰เจคเจชเฉฑเจคเฉ€, เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจจเจฎเจธเจ•เจพเจฐ, เจธเจพเจฅเฉ€เจ“เฅค เจฎเฉ‡เจฐเฉ‡ เจฒเฉœเจพเจˆ เจธเจฐเจตเจฐเจพเจ‚ 'เจคเฉ‡ เจธเฉเฉฐเจฆเจฐ nginx 2006 เจคเฉ‹เจ‚ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ เจชเฉเจฐเจธเจผเจพเจธเจจ เจฆเฉ‡ เจธเจพเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจ…เจคเฉ‡ เจจเจฎเฉ‚เจจเฉ‡ เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€เจคเฉ‡ เจนเจจเฅค เจฎเฉˆเจ‚ nginx เจฆเฉ€ เจฌเจนเฉเจค เจชเฉเจฐเจธเจผเฉฐเจธเจพ เจ•เฉ€เจคเฉ€ เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‡เจน เจชเจคเจพ เจšเจฒเจฟเจ† เจ•เจฟ เจฎเฉˆเจ‚ เจนเฉฑเจฌ 'เจคเฉ‡ เจ‡เฉฑเจ• nginx เจนเฉฑเจฌ เจตเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ เจนเฉˆ, เจตเฉ€, m/ เจจเฉ‚เฉฐ เจฆเจฟเจ–เจพเจ“
เจฆเฉ‹เจธเจคเจพเจ‚ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจ•เจพเจธ เจซเจพเจฐเจฎ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจนเจพ, เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ–เจพเจธ เจ–เจพเจ•เฉ‡ เจ–เจฟเฉฑเจšเจฃ เจฆเฉ€ เจฌเจœเจพเจ, เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฟเจฒเจšเจธเจช เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฏเจพเจฆ เจ†เจ‡เจ†เฅค nginxconfig.io, เจœเฉ‹ เจ•เจฟ เจธเจผเฉˆเจฒเจซเจพเจ‚ 'เจคเฉ‡ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ–เจฟเฉฐเจกเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ lets encrypt เจ†เจฆเจฟ เจฒเจˆ เจธเจญ เจ•เฉเจ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจฎเฉˆเจ‚ เจธเฉ‹เจšเจฟเจ†, เจ•เจฟเจ‰เจ‚ เจจเจนเฉ€เจ‚? เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฎเฉˆเจ‚ เจ‡เจธ เจคเฉฑเจฅ เจคเฉ‹เจ‚ เจ—เฉเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš เจธเฉ€ เจ•เจฟ nginxconfig เจฎเฉˆเจจเฉ‚เฉฐ wget/fetch/curl เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ‡ เจฌเจฟเจจเจพเจ‚, เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ•เฉ€ เจฌเจ•เจตเจพเจธ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจ•เจฟเจ‰เจ‚ เจฒเฉ‹เฉœ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ•เฉฐเจธเฉ‹เจฒ เจคเฉ‹เจ‚ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ‡เจธ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ. เจ—เฉเฉฑเจธเฉ‡ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจนเจฟเฉฐเจฎเจค เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฃ เจฒเจˆ เจ—เฉ€เจฅเจฌ เจตเจฟเฉฑเจš เจ—เจฟเจ†, เจœเจฟเจธ เจจเจพเจฒ เจ‡เจธเจฆเจพ เจซเฉ‹เจฐเจ• เจนเฉ‹เจ‡เจ† เจ…เจคเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€. เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจฎเฉˆเจ‚ เจจเจพ เจฒเจฟเจ–เจพเจ‚เจ—เจพ เจœเฉ‡ เจ‡เจน เจฆเจฟเจฒเจšเจธเจช เจจเจพ เจนเฉเฉฐเจฆเจพ ๐Ÿ˜‰

nginx เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‰เจคเจชเฉฑเจคเฉ€, เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจฌเฉ‡เจธเจผเฉฑเจ•, เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจฟเฉฑเจš เจ–เฉ‹เจฆเจฃ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฎเฉˆเจ‚ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจ•เฉเจฐเฉ‹เจฎ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจจเฉ‚เฉฐ เจ•เจฟเฉฑเจฅเฉ‡ เจ–เจฟเฉฑเจšเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ "เจฌเจฒเฉŒเจฌ:" เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจตเจพเจฒเจพ เจ‡เฉฑเจ• เจชเจคเจพ เจฎเฉ‡เจฐเจพ เจ‡เฉฐเจคเจœเจผเจพเจฐ เจ•เจฐ เจฐเจฟเจนเจพ เจธเฉ€, เจ“เจน. เจ‡เจน เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ เจธเฉ‡เจตเจพ เจฐเจธเจคเฉ‡ เจตเจฟเฉฑเจš เจ•เฉเจ เจตเฉ€ เจชเฉˆเจฆเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เจน เจธเจญ js เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ. เจฆเจฐเจ…เจธเจฒ, เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจ•เจฒเจพเจ‡เฉฐเจŸ, เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจ…เจคเฉ‡ เจœเจพเจตเจพเจธเจ•เฉเจฐเจฟเจชเจŸ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‰เจน. เจธเฉเฉฐเจฆเจฐเจคเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ nginxconfig.io เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• html เจชเฉฐเจจเฉ‡ เจตเจœเฉ‹เจ‚ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เฉเจ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ narod.ru เจ…เจคเฉ‡ เจ‡เจน เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ) เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจฎเจœเจผเจพเจ•เฉ€เจ† เจ…เจคเฉ‡ เจฆเจฟเจฒเจšเจธเจช เจนเฉฑเจฒ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจฐเจตเจฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจ‡เจน เจฌเจนเฉเจค เจ…เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆ, เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เจน เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เจฟเจธ เจฒเจˆ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€. เจ‡เฉฑเจ• เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจจเจพเจฒ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจชเฉเจฐเจพเจฒเฉ‡เจ– เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เจธเจจเฉ‚เฉฐ 2019 เจตเจฟเฉฑเจš nc... เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเฉ‹? เจฎเฉˆเจ‚ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ€ เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเจพ เจคเจฐเฉ€เจ•เจพ เจฒเฉฑเจญเจฃ เจฆเจพ เจ•เฉฐเจฎ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ เจนเฉˆเฅค
เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจซเฉ‹เจฐเจ• เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจ•เจฟ เจฎเฉ‡เจฐเฉ‡ เจตเจฟเจ•เจฒเจช เจ•เฉ€ เจธเจจเฅค เจ•เฉฐเจฎ เจ‡เจธ เจคเฉฑเจฅ เจฆเฉเจ†เจฐเจพ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจธเฉ€ เจ•เจฟ เจฎเฉˆเจ‚ เจ‡เจธ เจธเจผเจฐเจค เจคเฉ‹เจ‚ เจญเจŸเจ•เจฃเจพ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€ เจ•เจฟ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฌเฉˆเจ•-เจเจ‚เจก เจฆเฉ‡ เจธเจผเฉเฉฑเจง เจซเจฐเฉฐเจŸ-เจเจ‚เจก เจฐเจนเจฟเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค เจฌเฉ‡เจธเจผเฉฑเจ•, เจธเจญ เจคเฉ‹เจ‚ เจธเจฐเจฒ เจนเฉฑเจฒ เจจเฉ‹เจกเจœ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเจฃเจพ เจ…เจคเฉ‡ เจธเจฟเฉฑเจงเฉ‡ เจฒเจฟเฉฐเจ•เจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉเจฐเจพเจฒเฉ‡เจ– เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจฎเจœเจฌเฉ‚เจฐ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค
เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ‡เฉฑเจฅเฉ‡ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจธเจจเฅค เจนเฉ‹เจฐ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ เจคเฉ‡, เจ•เฉ‡เจตเจฒ เจ‡เฉฑเจ• เจนเฉ€ เจฎเจจ เจตเจฟเฉฑเจš เจ†เจ‡เจ†. เจธเจพเจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจธ เจจเฉ‚เฉฐ เจธเฉˆเจŸ เจ…เจช เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฒเจฟเฉฐเจ• เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฒเจˆ เจธเจฐเจตเจฐ เจ•เฉฐเจธเฉ‹เจฒ เจคเฉ‡ เจ•เจพเจชเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค
เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจตเจฟเฉฑเจš เจ•เจˆ เจŸเฉˆเจ•เจธเจŸ เจซเจพเจˆเจฒเจพเจ‚ เจฆเจพ เจตเจœเจผเจจ เจฌเจนเฉเจค เจฅเฉ‹เฉœเฉเจนเจพ เจธเฉ€, เจธเจผเจพเจฌเจฆเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉเจ เจ•เจฟเจฒเฉ‹เจฌเจพเจˆเจŸเฅค เจธเจชเฉฑเจธเจผเจŸ เจนเฉฑเจฒ เจ‡เจน เจธเฉ€ เจ•เจฟ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจคเฉ‹เจ‚ เจฌเฉ‡เจธ 64 เจธเจคเจฐ เจชเฉเจฐเจพเจชเจค เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจซเจฐ เจตเจฟเฉฑเจš เจธเฉเฉฑเจŸ เจฆเจฟเจ“, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจ•เจฎเจพเจ‚เจก เจฆเฉ‡ เจจเจพเจฒ เจธเจฐเจตเจฐ เจ‰เฉฑเจคเฉ‡

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

เจ…เจธเฉ€เจ‚ เจ‡เจนเฉ€ zip เจซเจพเจˆเจฒ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค

nginxconfig.io AngularJS เจตเจฟเฉฑเจš เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจฎเฉˆเจ‚ เจ•เจฒเจชเจจเจพ เจตเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจ•เจฟ เจœเฉ‡เจ•เจฐ เจฒเฉ‡เจ–เจ• เจจเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเจคเฉ€เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ js เจซเจฐเฉ‡เจฎเจตเจฐเจ• เจจเจพ เจšเฉเจฃเจฟเจ† เจนเฉเฉฐเจฆเจพ เจคเจพเจ‚ เจ•เจฟเจนเฉœเฉ‡ เจ•เจฟเจฒเฉ‹เจฎเฉ€เจŸเจฐ เจ•เฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€เฅค เจชเจฐ เจฎเฉˆเจ‚ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เจฒเจชเจจเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเจพเจ‚ เจ•เจฟ เจ‡เจน เจธเจญ VueJS เจตเจฟเฉฑเจš เจ•เจฟเฉฐเจจเจพ เจธเฉŒเจ–เจพ เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจธเฉเฉฐเจฆเจฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจ‡เฉฑเจ• เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉฑเจ–เจฐเจพ เจตเจฟเจธเจผเจพ เจนเฉˆ.
เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจขเฉฐเจ— เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚:

$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 เจ‡เฉฑเจ• เจœเจผเจฟเจช เจฌเจฃเจพเจˆ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเฉฐเจฐเจšเจจเจพ เจซเจพเจˆเจฒเจพเจ‚ เจฐเฉฑเจ–เฉ€เจ†เจ‚ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจฌเจฃเจพเจ‰เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, js เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจซเฉ€เจก เจ•เจฐเจฆเจพ เจนเฉˆ FileSaver.js:

saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.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',
	});
};

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจนเฉ‹เจตเฉ‡เจ—เจพ, เจฎเฉˆเจ‚ เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจฆเฉ€ เจชเฉ€เฉœเฉเจนเฉ€ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจชเฉเจฐเจพเจˆเจตเฉ‡เจŸ เจœเจจเจฐเฉ‡เจŸเจœเจผเจฟเจช เจตเจฟเจงเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจนเฉ€. เจ‡เจน AngularJS เจนเฉˆ, เจ…เจคเฉ‡ เจฒเฉ‡เจ–เจ• เจ–เฉเจฆ เจ•เจพเจฒเจฌเฉˆเจ•เจพเจ‚ เจจเจพเจฒ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ เจ…เจคเฉ‡ เจตเจพเจ…เจฆเจฟเจ†เจ‚ เจฆเฉเจ†เจฐเจพ เจ‡เจธเจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค เจกเจพเจ‰เจจเจฒเฉ‹เจกเจœเจผเจฟเจช เจจเฉ‡ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉ‡เจต เจ•เฉ€เจคเจพ เจธเฉ€, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจกเจพเจ‰เจจเจฒเฉ‹เจกเจฌเฉ‡เจธ 64 เจจเฉ‡ เจ•เฉเจ เจตเฉฑเจ–เจฐเจพ เจ•เฉ€เจคเจพ เจธเฉ€เฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฐเฉ€เจกเจฐ เจ†เจฌเจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ html5 เจตเจฟเฉฑเจš เจ†เจ‡เจ† เจธเฉ€ เจ…เจคเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจพเจซเจผเฉ€ เจนเฉˆ เจชเจนเฉเฉฐเจšเจฏเฉ‹เจ— เจตเจฐเจคเจฃ เจฒเจˆ. เจœเฉ‹, เจ‡เฉฑเจ• เจธเจฎเฉ‡เจ‚, เจ‡เฉฑเจ• เจฌเจฒเฉŒเจฌ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจฌเฉ‡เจธ 64 เจธเจคเจฐ เจฌเจฃเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจพเจ‚ เจ‡เจธ เจฆเฉ€ เจฌเจœเจพเจ, เจ‡เจน เจ‡เฉฑเจ• DataURL เจธเจคเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจธเจพเจกเฉ‡ เจฒเจˆ เจ‡เฉฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ DataURL เจตเจฟเฉฑเจš เจ‰เจนเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจฌเจฟเฉฐเจ—เฉ‹, เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ‡เจน เจธเจญ เจ•เฉเจ เจฌเจซเจฐ เจตเจฟเฉฑเจš เจชเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจคเจพเจ‚ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจœเจฟเจนเจพ เจเจŸเจ•เจพ เจฎเฉ‡เจฐเจพ เจ‡เฉฐเจคเจœเจผเจพเจฐ เจ•เจฐ เจฐเจฟเจนเจพ เจธเฉ€เฅค เจฒเฉ‡เจ–เจ• เจจเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ clipboardjs, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจšเฉเจฃเฉ‡ เจŸเฉˆเจ•เจธเจŸ เจฆเฉ‡ เจ†เจงเจพเจฐ 'เจคเฉ‡ เจซเจฒเฉˆเจธเจผ เจ†เจฌเจœเฉˆเจ•เจŸ เจฆเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ•เจฒเจฟเฉฑเจชเจฌเฉ‹เจฐเจก เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจฌเฉ‡เจธ 64 เจจเฉ‚เฉฐ เจกเจฟเจธเจชเจฒเฉ‡เจ… เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจคเฉฑเจค เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ: เจ•เฉ‹เจˆ เจจเจนเฉ€เจ‚;, เจชเจฐ เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฒเจฟเฉฑเจชเจฌเฉ‹เจฐเจก 'เจคเฉ‡ เจจเจนเฉ€เจ‚ เจชเจพ เจธเจ•เจฟเจ† เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ•เฉ‹เจˆ เจตเจฟเจ›เฉ‹เฉœเจพ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค เจ‡เจธ เจฒเจˆ, เจกเจฟเจธเจชเจฒเฉ‡ เจฆเฉ€ เจฌเจœเจพเจ:none; เจฎเฉˆเจ‚ เจ•เฉ€เจคเจพ

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

เจœเจฟเจธ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจคเฉฑเจค เจจเฉ‚เฉฐ เจฆเฉเจฐเจฟเจธเจผ เจคเฉ‹เจ‚ เจฒเฉเจ•เจพเจ‰เจฃ เจ…เจคเฉ‡ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจชเฉฐเจจเฉ‡ 'เจคเฉ‡ เจ›เฉฑเจกเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฑเจคเฉ€. เจตเฉ‹เจ‡เจฒเจพ, เจ•เฉฐเจฎ เจชเฉ‚เจฐเจพ เจนเฉ‹ เจ—เจฟเจ† เจธเฉ€, เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจฌเจŸเจจ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เฉ€เจคเจพ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเจพเจˆเจจ เจฌเจซเจฐ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เฉ€ เจ—เจˆ เจธเฉ€:

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

เจœเจฟเจธ เจจเฉ‚เฉฐ เจฎเฉˆเจ‚ เจฌเจธ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ•เฉฐเจธเฉ‹เจฒ เจตเจฟเฉฑเจš เจชเฉ‡เจธเจŸ เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจคเฉเจฐเฉฐเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉฐเจฐเจšเจจเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจœเจผเจฟเจช เจ†เจฐเจ•เจพเจˆเจต เจชเฉเจฐเจพเจชเจค เจ•เฉ€เจคเจพเฅค
เจ…เจคเฉ‡, เจฌเฉ‡เจธเจผเจ•, เจฎเฉˆเจ‚ เจฒเฉ‡เจ–เจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจญเฉ‡เจœเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ ... เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจ…เจคเฉ‡ เจœเฉ€เจตเฉฐเจค เจนเฉˆ, เจฎเฉˆเจ‚ เจฒเฉ‡เจ–เจ• เจคเฉ‹เจ‚ เจ…เจชเจกเฉ‡เจŸเจธ เจฆเฉ‡เจ–เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ‚ เจ…เจคเฉ‡ เจฎเฉ‡เจฐเจพ เจ†เจชเจฃเจพ เจฌเจŸเจจ เจนเฉˆ) เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฃ เจตเจพเจฒเจฟเจ†เจ‚ เจฒเจˆ, เจ‡เจน เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ เจฎเฉ‡เจฐเจพ เจ•เจพเจ‚เจŸเจพ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจฌเฉ‡เจจเจคเฉ€ เจจเฉ‚เฉฐ เจ–เจฟเฉฑเจšเฉ‹, เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจฎเฉˆเจ‚ เจ•เฉ€ เจ เฉ€เจ•/เจœเฉ‹เฉœเจฟเจ† เจนเฉˆเฅค
เจธเจพเจฐเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจตเจฟเจ•เจพเจธ เจฆเฉ€เจ†เจ‚ เจฎเฉเจฌเจพเจฐเจ•เจพเจ‚)

nginx เจฒเจˆ เจธเฉฐเจฐเจšเจจเจพ เจฆเฉ€ เจ‰เจคเจชเฉฑเจคเฉ€, เจ‡เฉฑเจ• เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€ เจฆเจพ เจ‡เจคเจฟเจนเจพเจธ

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹