рд╕рд╛рдЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕

рдПрдХ рдЫреЛрдЯреА рдмрдВрдж рд╕рд╛рдЗрдЯ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрд▓реНрдмрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреАрдд рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЗрди рдПрд▓реНрдмрдореЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдкрд░, рдПрд▓реНрдмрдореЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╕реНрд╡рдпрдВ рд╕рдВрдЧреАрдд рд░рдЪрдирд╛рдПрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдирдЧрдиреЗрдХреНрд╕ рдХреЛ рджреА рдЬрд╛рддреА рд╣реИрдВред
рдЬрдм рддрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рдВрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдкрд╕рдВрдж рдХрд┐рдП рдЧрдП рдПрд▓реНрдмрдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рддрдм рддрдХ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ред

рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред

рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рдирд┐рд░реНрдгрдп рдкреНрд░рддреНрдпреЗрдХ рдПрд▓реНрдмрдо рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЗрдирд╛ рд╣реИред
рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░рдг: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдЧреАрдд рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдПрд▓реНрдмрдо рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбрд┐рд╕реНрдХ рд╕реНрдерд╛рди рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рджреЛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЬрдмрдХрд┐ рд╣рдо рдЗрд╕реЗ рдмрд░реНрджрд╛рд╢реНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдпрд╣ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рдкрд░ рдФрд░ рдордХреНрдЦреА рдкрд░ рдПрд▓реНрдмрдо рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛ рдЖрджрд░реНрд╢ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рддреЗ рд╕рдордп рд╕рдВрдкреАрдбрд╝рди рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдУрд╡рд░рд╣реЗрдб рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд▓рд╛рдЧрддреЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ - рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реАрдкреАрдпреВ рд╕рдордп рдФрд░ рд░реИрдо рдХреА рдмрдбрд╝реА рдЖрдкреВрд░реНрддрд┐ рд╣реИред

рдирдЧрдиреЗрдХреНрд╕ , рдпрд╛ рдХреБрдЫ рдЕрдиреНрдп рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЦреЛрдЬ, рдПрдХ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ - рд╣рдо рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ - рдХрд╛рд░реНрдп рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирдХ рдЬрд╝рд┐рдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдмрд┐рдирд╛ рд╕рдВрдкреАрдбрд╝рди рдХреЗ, рд╣рдо рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рд╕реАрдзреЗ stdout рдореЗрдВ рднреЗрдЬ рджреЗрдВрдЧреЗред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЯрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ рдФрд░ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рд░рд╣рд╕реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдЯрд╛рд░ рдпрд╛ рдЯрд╛рд░рдЧреЗрдЯ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

рдЕрдм рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрдВрдкреНрд░реЗрд╕реНрдб рдбреЗрдЯрд╛ рдХреЛ nginx рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕реЗ рдпреВрдЬрд░ рдХреЛ рджреЗрдЧрд╛ред
рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ cgi- рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реЗрд▓ рдкрд░ рд▓рд┐рдЦреА рдЧрдИ рдереА:
#!/bin/bash #  ,              homeDir="/storage/media/audio" #       ,     downloadDir=$(echo $QUERY_STRING | sed -f urldecode.sed) #     pushd "$homeDir" > /dev/null #   ,     -      zip       if [ -d $downloadDir ] && [ ! -z $downloadDir ] && [[ "$downloadDir" != *\/* ]] && [[ "$downloadDir" != *\\* ]] then echo "Content-Type: application/octet-stream" echo "Content-Disposition: attachment; filename=$downloadDir.zip" echo "" /usr/bin/zip -r -0 - "$downloadDir" else echo "Status: 404 Not Found" echo "Content-Type: text/html" echo "" echo "<h1>404 File not found!</h1>" fi #     popd > /dev/null 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░рд▓ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдо url-encoded рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдбрд┐рдХреЛрдб рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо sed рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдпрд╣рд╛рдБ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реА cgi-script рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд░рдЦ рджреЗрддреЗ рд╣реИрдВред

рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ nginx FastCGI рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдФрд░ CGI рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрднреА рднреА рдХрд╛рдо рдХрд░реЗрдЧреА, рд╣рдо Fcgiwrap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ ред

рд╣рдо рдбрд╛рд▓рддреЗ рд╣реИрдВ:
 apt-get install fcgiwrap 


рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
 # support for cgi scripts (require fcgiwrap) location ~ \.cgi$ { gzip off; try_files $uri =404; # pass scripts to fcgiwrap fastcgi_pass unix:/var/run/fcgiwrap.socket; #    include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_ignore_client_abort off; } 


Nginx рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: /download.cgi? imya_direktorii_dlya рдбрд╛рдЙрдирд▓реЛрдб

Source: https://habr.com/ru/post/In194904/


All Articles