แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒ Google Drive-แƒ˜แƒ“แƒแƒœ nginx-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—

แƒฌแƒ˜แƒœแƒแƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ

แƒ˜แƒกแƒ” แƒ›แƒแƒฎแƒ“แƒ, แƒ แƒแƒ› แƒ“แƒแƒ›แƒญแƒ˜แƒ แƒ“แƒ แƒกแƒแƒ“แƒ›แƒ” 1.5 แƒขแƒ‘-แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ“แƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ แƒ˜ แƒšแƒ˜แƒœแƒ™แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—. แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ› แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒ”แƒ—แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒšแƒแƒ“ แƒ›แƒ˜แƒ“แƒ˜แƒก VDS-แƒ–แƒ”, แƒ“แƒแƒฅแƒ˜แƒ แƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒช แƒ—แƒฃ แƒ˜แƒกแƒ” แƒ“แƒ˜แƒ“แƒแƒ“ แƒจแƒ”แƒ“แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ‘แƒ˜แƒฃแƒฏแƒ”แƒขแƒจแƒ˜ "แƒแƒ แƒแƒคแƒ”แƒ แƒ˜แƒ แƒ’แƒแƒกแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜" แƒ™แƒแƒขแƒ”แƒ’แƒแƒ แƒ˜แƒ˜แƒ“แƒแƒœ, แƒ“แƒ แƒฌแƒงแƒแƒ แƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ›แƒฅแƒแƒœแƒ“แƒ VPS 400 GB SSD, แƒกแƒแƒ“แƒแƒช, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ›แƒ”. แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ, 1.5 แƒขแƒ‘ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ แƒ•แƒ”แƒ  แƒ“แƒแƒ•แƒ“แƒ” แƒฃแƒ“แƒแƒœแƒแƒ™แƒแƒ แƒ’แƒ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒ’แƒแƒ›แƒแƒ•แƒ.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒฎแƒกแƒ”แƒœแƒ“แƒ, แƒ แƒแƒ› แƒ—แƒฃ แƒฌแƒแƒจแƒแƒšแƒ” แƒฃแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ Google Drive-แƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฎแƒแƒšแƒแƒ“ Windows XP-แƒ–แƒ” แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ แƒแƒ›, แƒ แƒแƒช แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒแƒ“แƒ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒ“แƒแƒœ แƒ›แƒ”แƒแƒ แƒ”แƒ–แƒ” แƒ˜แƒ› แƒ“แƒ แƒแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒขแƒ˜ แƒแƒ แƒช แƒ˜แƒกแƒ” แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ˜แƒงแƒ, แƒจแƒ”แƒฃแƒ–แƒฆแƒฃแƒ“แƒแƒ•แƒ˜ ( แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒงแƒฃแƒ—แƒ˜แƒก แƒ˜แƒ› 10-20 แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ, แƒ แƒแƒ› แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒฎแƒ•แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก, แƒ’แƒแƒ แƒ“แƒ แƒœแƒแƒกแƒขแƒแƒšแƒ’แƒ˜แƒ˜แƒกแƒ), แƒ›แƒแƒจแƒ˜แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ›แƒแƒ”แƒ แƒ’แƒแƒก. แƒแƒ“แƒ แƒ” แƒแƒ  แƒแƒ แƒ˜แƒก แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜. แƒแƒกแƒ” แƒ แƒแƒ›, api-แƒ–แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒšแƒ˜แƒ›แƒ˜แƒขแƒ˜แƒก แƒ’แƒแƒ แƒฆแƒ•แƒ”แƒ•แƒ˜แƒ— (แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒขแƒ”แƒฅแƒœแƒ˜แƒ™แƒฃแƒ แƒ›แƒ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒแƒ› แƒฃแƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒ“ แƒ’แƒแƒ–แƒแƒ แƒ“แƒ แƒ—แƒ˜แƒ—แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ™แƒ•แƒแƒขแƒ 100-แƒ›แƒ“แƒ” 10 แƒฌแƒแƒ›แƒจแƒ˜), แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒ˜แƒ”แƒ“แƒ˜แƒœแƒ”แƒ‘แƒแƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒ–แƒ”. .

แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒ˜แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฎแƒšแƒ แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ. แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒ˜แƒช, แƒกแƒฎแƒ•แƒ แƒ แƒ”แƒกแƒฃแƒ แƒกแƒ”แƒ‘แƒ–แƒ” แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒญแƒ˜แƒ แƒแƒก แƒฆแƒ˜แƒšแƒแƒ™แƒก "แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ" แƒ“แƒ แƒ’แƒแƒฎแƒ“แƒ”แƒก แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒ˜ แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ˜.

แƒแƒ˜, แƒฆแƒ›แƒ”แƒ แƒ—แƒ, แƒงแƒ•แƒ”แƒšแƒแƒœแƒแƒ˜แƒ  แƒฃแƒ‘แƒ”แƒ“แƒฃแƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒฌแƒแƒ•แƒ”แƒ“แƒ˜. แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ”แƒก แƒ˜แƒงแƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ AmPHP-แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ” แƒแƒ  แƒ•แƒ˜แƒงแƒแƒ•แƒ˜ แƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ›แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ— (แƒ›แƒ™แƒ•แƒ”แƒ—แƒ แƒ˜ แƒœแƒแƒฎแƒขแƒแƒ›แƒ˜ แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ 100% แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ›แƒ“แƒ”). แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒแƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ“แƒ ReactPHP-แƒ˜แƒก แƒกแƒแƒฎแƒ•แƒ”แƒ•แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฏแƒ“แƒ”แƒ‘แƒแƒ“แƒ แƒฉแƒ”แƒ›แƒก แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ”แƒ‘แƒจแƒ˜ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ CPU แƒชแƒ˜แƒ™แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒแƒซแƒšแƒ”แƒ•แƒ“แƒ แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ”แƒก แƒ แƒแƒช แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ (แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒแƒ— แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒแƒšแƒ˜ curl_multi_select, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒกแƒ˜แƒฎแƒแƒ แƒ‘แƒ”). แƒ›แƒ” แƒ™แƒ˜ แƒ•แƒชแƒแƒ“แƒ” แƒžแƒแƒขแƒแƒ แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ Rust-แƒจแƒ˜ แƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ (แƒ’แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒ˜แƒ, แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ, แƒฉแƒ”แƒ›แƒ˜ แƒชแƒแƒ“แƒœแƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ”แƒขแƒ˜ แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ“แƒ แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒ. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒงแƒ•แƒ”แƒšแƒ แƒ”แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒฃแƒชแƒœแƒแƒฃแƒ แƒแƒ“ แƒแƒคแƒ”แƒ แƒฎแƒ”แƒ‘แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒก แƒ“แƒ แƒ›แƒ˜แƒœแƒ“แƒแƒ“แƒ แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒ˜ แƒแƒ“แƒ”แƒ•แƒœแƒ แƒ˜แƒ› แƒ›แƒแƒ›แƒ”แƒœแƒขแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ แƒฃแƒ“แƒ˜แƒ“แƒ”แƒกแƒ˜ แƒกแƒ˜แƒ–แƒฃแƒกแƒขแƒ˜แƒ—.

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒชแƒแƒขแƒ แƒฎแƒแƒœแƒ˜ แƒ˜แƒ™แƒ”แƒชแƒ”แƒ‘แƒแƒ“แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ. แƒกแƒแƒœแƒแƒ› แƒ”แƒ แƒ— แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ  แƒ“แƒฆแƒ”แƒก แƒแƒ  แƒ›แƒแƒ›แƒ˜แƒ•แƒ˜แƒ“แƒ แƒ˜แƒ“แƒ”แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ แƒฉแƒ”แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒกแƒ˜แƒ’แƒ˜แƒŸแƒ˜แƒ—: nginx-แƒก, แƒ—แƒ”แƒแƒ แƒ˜แƒฃแƒšแƒแƒ“, แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒก แƒ˜แƒก, แƒ แƒแƒช แƒ›แƒ” แƒ›แƒ˜แƒœแƒ“แƒ, แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒ แƒ“แƒแƒฃแƒจแƒ•แƒแƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒฎแƒ˜แƒก แƒ’แƒแƒ แƒงแƒ•แƒœแƒ˜แƒšแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ•แƒชแƒแƒ“แƒแƒ— - แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ, แƒ—แƒฃ แƒ”แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก? แƒ“แƒ แƒœแƒแƒฎแƒ”แƒ•แƒแƒ แƒ˜ แƒ“แƒฆแƒ˜แƒก แƒ“แƒแƒŸแƒ˜แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒซแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒ˜แƒ‘แƒแƒ“แƒ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜ แƒกแƒขแƒแƒ‘แƒ˜แƒšแƒฃแƒ แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ แƒ“แƒ แƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ“แƒ แƒฉแƒ”แƒ›แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก.

NGINX-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

# ะŸะตั€ะฒั‹ะผ ะดะตะปะพะผ ัะพะทะดะฐะดะธะผ ะฒ ะบะพะฝั„ะธะณะฐั… ะฝะฐัˆะตะณะพ ัะฐะนั‚ะฐ ะพั‚ะดะตะปัŒะฝัƒัŽ ะปะพะบะฐั†ะธัŽ.
location ~* ^/google_drive/(.+)$ {

    # ะ˜ ะทะฐะบั€ะพะตะผ ะตั‘ ะพั‚ ะฟะพัั‚ะพั€ะพะฝะฝะธั… ะณะปะฐะท (ั€ัƒะบ, ะฝะพะณ ะธ ะฟั€ะพั‡ะธั… ั‡ะฐัั‚ะตะน ั‚ะตะปะฐ).
    internal;

    # ะžะณั€ะฐะฝะธั‡ะธะผ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัะผ ัะบะพั€ะพัั‚ัŒ ะดะพ ั€ะฐะทัƒะผะฝั‹ั… ะฟั€ะตะดะตะปะพะฒ (ั ะทะฐ ั€ะฐะฒะฝะพะฟั€ะฐะฒะธะต).
    limit_rate 1m;

    # ะ ั‡ั‚ะพะฑ nginx ะผะพะณ ะฝะฐะนั‚ะธ ัะตั€ะฒะตั€ะฐ google drive ัƒะบะฐะถะตะผ ะตะผัƒ ะฐะดั€ะตั ั€ะตะทะพะปะฒะตั€ะฐ.
    resolver 8.8.8.8;

    # Cะพะฑะตั€ะตะผ ะฟัƒั‚ัŒ ะบ ะฝะฐัˆะตะผัƒ ั„ะฐะนะปัƒ (ะผั‹ ะฟะพั‚ะพะผ ะฟะตั€ะตะดะฐะดะธะผ ะตะณะพ ะทะฐะณะพะปะพะฒะบะฐะผะธ).
    set $download_url https://www.googleapis.com/drive/v3/files/$upstream_http_file_id?alt=media;

    # ะ ั‚ะฐะบ ะถะต Content-Disposition ะทะฐะณะพะปะพะฒะพะบ, ะธะผั ั„ะฐะนะปะฐ ะผั‹ ะฟะตั€ะตะดะฐะดะธะผ ะพะฟัั‚ัŒ ะถะต ะฒ ะทะฐะณะพะปะพะฒะบะฐั….
    set $content_disposition 'attachment; filename="$upstream_http_filename"';

    # ะ—ะฐะฟั€ะตั‚ะธะผ ะฑัƒั„ั„ะตั€ะธะทะธั€ะพะฒะฐั‚ัŒ ะพั‚ะฒะตั‚ ะฝะฐ ะดะธัะบ.
    proxy_max_temp_file_size 0;

    # ะ˜, ั‡ั‚ะพ ะฝะตะผะฐะปะพะฒะฐะถะฝะพ, ะฟะตั€ะตะดะฐะดะธะผ ะทะฐะณะพะปะพะฒะพะบ ั ั‚ะพะบะตะฝะพะผ (ะฝะต ะทะฝะฐัŽ ะฟะพั‡ะตะผัƒ, ะฝะพ ะฒ ะทะฐะณะพะปะพะฒะบะฐั… ะธะท $http_upstream ั‚ะพะบะตะฝ ะฟะตั€ะตะดะฐั‚ัŒ ะฝะต ะฟะพะปัƒั‡ะธะปะพััŒ. ะ’ะตั€ะฝะตะต ะฟะตั€ะตะดะฐั‚ัŒ ะฟะพะปัƒั‡ะธะปะพััŒ, ะฝะพ ัะบะพั€ะตะน ะฒัะตะณะพ ะตะณะพ ะณะดะต-ั‚ะพ ะฝัƒะถะฝะพ ัะบั€ะฐะฝะธั€ะพะฒะฐั‚ัŒ, ะฟะพั‚ะพะผัƒ ั‡ั‚ะพ ะณัƒะณะป ะพั‚ะดะฐะตั‚ ะพัˆะธะฑะบัƒ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ).
    proxy_set_header Authorization 'Bearer $1';

    # ะ˜ ะฒัะต, ะพัั‚ะฐะปะพััŒ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะทะฐะฟั€ะพั ะณัƒะณะปัƒ ะฟะพ ั€ะฐะฝะตะต ัะพะฑั€ะฐะฝะฝะพะผัƒ ะฝะฐะผะธ ะฐะดั€ะตััƒ.
    proxy_pass $download_url;

    # ะ ั‡ั‚ะพะฑ ัƒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปั ะฟั€ะธ ัะบะฐั‡ะธะฒะฐะฝะธะธ ะพั‚ะพะฑั€ะฐะทะธะปะพััŒ ะฟั€ะฐะฒะธะปัŒะฝะพะต ะธะผั ั„ะฐะนะปะฐ ะผั‹ ะดะพะฑะฐะฒะธะผ ัะพะพั‚ะฒะตั‚ัั‚ะฒัƒัŽั‰ะธะน ะทะฐะณะพะปะพะฒะพะบ.
    add_header Content-Disposition $content_disposition;

    # ะžะฟั†ะธะพะฝะฐะปัŒะฝะพ ะผะพะถะฝะพ ะฟะพัƒะฑะธั€ะฐั‚ัŒ ะฝะตะฝัƒะถะฝั‹ะต ะฝะฐะผ ะทะฐะณะพะปะพะฒะบะธ ะพั‚ ะณัƒะณะปะฐ.
    proxy_hide_header Content-Disposition;
    proxy_hide_header Alt-Svc;
    proxy_hide_header Expires;
    proxy_hide_header Cache-Control;
    proxy_hide_header Vary;
    proxy_hide_header X-Goog-Hash;
    proxy_hide_header X-GUploader-UploadID;
}

แƒ›แƒแƒ™แƒšแƒ” แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒกแƒžแƒแƒ˜แƒšแƒ”แƒ แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ

location ~* ^/google_drive/(.+)$ {
    internal;
    limit_rate 1m;
    resolver 8.8.8.8;
    
    set $download_url https://www.googleapis.com/drive/v3/files/$upstream_http_file_id?alt=media;
    set $content_disposition 'attachment; filename="$upstream_http_filename"';
    
    proxy_max_temp_file_size 0;
    proxy_set_header Authorization 'Bearer $1';
    proxy_pass $download_url;
    
    add_header Content-Disposition $content_disposition;
    
    proxy_hide_header Content-Disposition;
    proxy_hide_header Alt-Svc;
    proxy_hide_header Expires;
    proxy_hide_header Cache-Control;
    proxy_hide_header Vary;
    proxy_hide_header X-Goog-Hash;
    proxy_hide_header X-GUploader-UploadID;
}

แƒฉแƒ•แƒ”แƒœ แƒ•แƒฌแƒ”แƒ แƒ— แƒกแƒชแƒ”แƒœแƒแƒ แƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒแƒ› แƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ›แƒแƒ แƒ—แƒแƒ•แƒแƒ“

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ PHP-แƒจแƒ˜ แƒ“แƒ แƒจแƒ”แƒ’แƒœแƒ”แƒ‘แƒฃแƒšแƒแƒ“ แƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒ—. แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ•แƒ˜แƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒ”แƒœแƒแƒ–แƒ”, แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒก แƒแƒ› แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒแƒก แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

<?php

# ะขะพะบะตะฝ ะดะปั Google Drive Api.
define('TOKEN', '*****');

# ID ั„ะฐะนะปะฐ ะฝะฐ ะณัƒะณะป ะดะธัะบะต
$fileId = 'abcdefghijklmnopqrstuvwxyz1234567890';

# ะžะฟั†ะธะพะฝะฐะปัŒะฝะพ, ะฝะพ ั‚ะฐะบ ะบะฐะบ ะผั‹ ะฝะต ะฟะตั€ะตะดะฐะตะผ ะฝะธะบะฐะบะธั… ะดะฐะฝะฝั‹ั… - ะฟะพั‡ะตะผัƒ ะฑั‹ ะธ ะฝะตั‚?
http_response_code(204);

# ะ—ะฐะดะฐะดะธะผ ะทะฐะณะพะปะพะฒะพะบ c ID ั„ะฐะนะปะฐ (ะฒ ะบะพะฝั„ะธะณะฐั… nginx ะผั‹ ะฟะพั‚ะพะผ ะฟะพะปัƒั‡ะธะผ ะตะณะพ ะบะฐะบ $upstream_http_file_id).
header('File-Id: ' . $fileId);
# ะ˜ ะทะฐะณะพะปะพะฒะพะบ ั ะธะผะตะฝะตะผ ั„ะฐะนะปะฐ (ัะพะพั‚ะฒะตั‚ัั‚ะฒะตะฝะฝะพ $upstream_http_filename).
header('Filename: ' . 'test.zip');
# ะ’ะฝัƒั‚ั€ะตะฝะฝะธะน ั€ะตะดะธั€ะตะบั‚. ะ ะตั‰ะต ะฒ ะฐะดั€ะตัะต ะผั‹ ะฟะตั€ะตะดะฐะดะธะผ ั‚ะพะบะตะฝ, ั‚ะพั‚ ัะฐะผั‹ะน, ั‡ั‚ะพ ะผั‹ ะฟะพะปัƒั‡ะฐะตะผ ะธะท $1 ะฒ nginx.
header('X-Accel-Redirect: ' . rawurlencode('/google_drive/' . TOKEN));

แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜

แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒ”แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜แƒ“แƒแƒœ. แƒ“แƒ˜แƒแƒฎ, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ˜แƒ“แƒแƒœ แƒแƒœ VK-แƒ“แƒแƒœ, (แƒ˜แƒ› แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ–แƒแƒ›แƒ แƒแƒ  แƒแƒฆแƒ”แƒ›แƒแƒขแƒ”แƒ‘แƒ แƒแƒ› แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘ แƒ–แƒแƒ›แƒแƒก). แƒ›แƒ”แƒช แƒ›แƒฅแƒแƒœแƒ“แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒ˜แƒ“แƒ”แƒ แƒแƒ›, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒแƒ›แƒฌแƒฃแƒฎแƒแƒ แƒแƒ“ 2 แƒ’แƒ‘-แƒ›แƒ“แƒ” แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก แƒฌแƒแƒ•แƒแƒฌแƒงแƒ“แƒ˜ แƒ“แƒ แƒฏแƒ”แƒ  แƒ•แƒ”แƒ  แƒ•แƒ˜แƒžแƒแƒ•แƒ” แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒแƒœ แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ–แƒ”แƒ›แƒ แƒ“แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒ”แƒ‘แƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒแƒ› แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ แƒแƒ˜แƒ›แƒ” แƒกแƒแƒฎแƒ˜แƒก แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ แƒฃแƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒแƒ“ แƒจแƒ แƒแƒ›แƒแƒขแƒ”แƒ•แƒแƒ“แƒ˜แƒ.

แฒ’แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ— แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒ›แƒ”แƒ“แƒ˜ แƒ›แƒแƒฅแƒ•แƒก, แƒ แƒแƒ› แƒฉแƒ”แƒ›แƒ˜ แƒ˜แƒกแƒขแƒแƒ แƒ˜แƒ แƒชแƒแƒขแƒแƒ—แƒ˜ แƒ›แƒแƒ˜แƒœแƒช แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒแƒœ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒ˜แƒงแƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ