рд╕рдВрд╕реНрдХрд░рдг 0.8.50 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, Nginx Secure_link рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЬрд╛рд▓рд╕рд╛рдЬреА рд╕реЗ рд▓рд┐рдВрдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рд╣реИред рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЕрднреА рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ [
1 ]ред рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╡рд┐рд╡рд░рдг Nginx рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ [
2 ] рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ Sysoyev рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ [
3 ]ред рд╕реБрд░рдХреНрд╖рд┐рдд рд▓рд┐рдВрдХ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHP рдХреЛрдб рдирдЧреАрдирдХреНрд╕ рдлреЛрд░рдо [
4 ] рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдирд╡рд╛рдЪрд╛рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
nginx.conf:
рд╕реНрдерд╛рди ~ ^ / p / ((? <рд╕реБрд░рдХреНрд╖рд┐рдд> [\ w -] +, \ d +) / ((? <рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯрд╕реНрдЯрдлрд╝>ред) $ {ред
safe_link $ рд╕реБрд░рдХреНрд╖рд┐рдд;
# рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, '$ рд╕реБрд░рдХреНрд╖рд┐рдд' = "рдПрдЪрдПрдПрд╕рдПрдЪ, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк"
safe_link_md5 PASSWORD $ safe_link_expires $ рд╕реБрд░рдХреНрд╖рд┐рдд_рд╕реНрдЯрдлрд╝;
# # $ safe_link_expires 'рдПрдХ nginx рдЪрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ' safe_link '= TIMESTAMP рд╕реЗ рджрд╢рдорд▓рд╡ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ
рдЕрдЧрд░ ($ Secure_link = "") {403 рд╡рд╛рдкрд╕реА рдХрд░реЗрдВ; } # рдЕрд╡реИрдз рд▓рд┐рдВрдХ
рдЕрдЧрд░ ($ Secure_link == 0) {рд╡рд╛рдкрд╕реА 410; } # рдПрдХреНрд╕рдкрд╛рдпрд░реНрдб рд▓рд┐рдВрдХ
# рд▓рд┐рдВрдХ рдареАрдХ рд╣реИ, рдпрд╣рд╛рдБ рдХреБрдЫ рдХрд░реЛ
}
URL рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: / p / HASH, TIMESTAMP / рдХреБрдЫ рднреА рдЬрд╣рд╛рдВ
PASSWORD рдЧреБрдкреНрдд рдкрд╛рд╕рд╡рд░реНрдб
TIMESTAMP рд╡рд╣ рд╕рдордп рд╣реИ рдЬрдм рддрдХ рдпреВрдирд┐рдХреНрд╕ рдпреБрдЧ рдореЗрдВ рд▓рд┐рдВрдХ рд╡реИрдз рд╣реИ
рдХреБрдЫ рднреА рдордирдорд╛рдирд╛ рдкрд╛рда
рдмреЗрд╕64- URL [
5 ] рдореЗрдВ md5 рд╣реИрд╢ рд╕реБрд░рдХреНрд╖рд┐рдд_рд▓рд┐рдВрдХ_рдПрдордбреА 5 рдЯреЗрдВрдкрд▓реЗрдЯ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХреБрдЫ рднреА рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ) рд╕реЗ рдПрдЪрдПрд╕рдПрдЪ рдПрдирдХреЛрдбреЗрдб рд╣реИред Base64 рдХреЗ рдмрд╛рдж рд╡рд░реНрдг = 'рдХреЛ рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Mgin5 рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдореЗрдВ Nginx рдХреЗ рдХреБрдЫ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВ:
1. URL рд╕реЗ рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ ($ рд╕реБрд░рдХреНрд╖рд┐рдд_рд╕реНрдЯрдл) рдореВрд▓ рд░реВрдк рдореЗрдВ URL рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
2. рдмреЗрд╕ 5 рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП md5 рд╣реИрд╢ рдХреЛ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
PHP рдХреЗ рд▓рд┐рдП рдХреЛрдб рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
$time = time() + EXPIRE_TTL;
рдЖрдк рд╣реИрд╢ рдФрд░ рдЯрд╛рдЗрдо рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдФрд░ рдХреБрдХреАрдЬрд╝ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
URL рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП
http://example.com/p/files/top_secret.pdf?st=PIrEk4JX5gJPTGmvqJG41g&e=1324527723
рдЬрд╣рд╛рдВ
рд╕реЗрдВрдЯ PASSWORD, URI рдФрд░ рддрд░реНрдХ
рдИ рд╕реЗ рдПрдХ рд╣реИрд╢ рд╣реИ
рд╕реНрдерд╛рди рджреЗрдЦреЗрдВ
рд╕реНрдерд╛рди / рдкреА / {
safe_link $ arg_st, $ arg_e; # рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд URI рднрд╛рдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
safe_link_md5 PASSWORD $ uri $ arg_e; # PASSWORD рдЧреБрдкреНрдд рдЯреЛрдХрди рд╣реИ
....
}
рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣реИрд╢ рдмрдирд╛рддреЗ рд╕рдордп, рдЖрдк рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдВрджрд░реНрдн:
[рез]
sysoev.ru/nginx/docs/http/ngx_http_secure_link_module.html[реи]
wiki.nginx.org/HttpSecureLinkModule[рей]
nginx.org/pipermail/nginx/2010-Seture/022324.html[рек]
forum.nginx.org/read.php?21 , резреиремрейремрей,резреи forumрейреирек # рд╕рдВрджреЗрд╢ -резреи forumрейреирек
[рел]
en.wikipedia.org/wiki/Base64#URL_applications