рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ NWSx рдкрд░ AWS рдХреЗ рд▓рд┐рдП рджреГрд╢реНрдпрдкрдЯрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп StackOverflow рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, S3 рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдореАрдк рдЖрдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рддреИрдпрд╛рд░-рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рдХреНрдпреЛрдВ рдкрдбрд╝реЗрдЧреА?
- рдЖрдИрдПрдирдПрд╕реА рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ (рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ) рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ - рдирдЧреАрдиреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдирд┐рдпрдВрддреНрд░рдгред рдПрдХреНрд╕реЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХреЗрд╡рд▓ рдЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиреЛрдВ рдореЗрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдЬреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реИрдВред
- рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ nginx рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╛рдЗрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ S3 рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
- рдРрд╕рд╛ рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рднрд┐рдиреНрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рднрдВрдбрд╛рд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ (рдЖрдЦрд┐рд░рдХрд╛рд░, S3 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рднреА рд╣реИрдВ)ред
рд╣рдо рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
- рд╕реНрд░реЛрдд рдмрд╛рд▓реНрдЯреА рдирд┐рдЬреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП - рдЖрдк рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ S3 рд╕реЗ рд╕реАрдзреЗ рдлрд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╕
proxy_pass
рдЙрдкрдпреЛрдЧ proxy_pass
рдФрд░ рдЖрдк рдЕрдм рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред - рдСрдкрд░реЗрд╢рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП AWS рджреНрд╡рд╛рд░рд╛ рдЯреНрдпреВрдирд┐рдВрдЧ рдПрдХ "рдЯреНрдпреВрдиреНрдб рдФрд░ рдлреЙрд░рдЧреЗрдЯ" рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдмрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдорд╛рдереЗ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдкрдХреА рдореВрд▓ рдмрд╛рд▓реНрдЯреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реИ, рддреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдЖрдкрдХреЛ рдзрдордХреА рдирд╣реАрдВ рджреЗрддреА рд╣реИ, S3 рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдЕрдиреБрд░реЛрдз рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдирд┐рдЬреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ S3 рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рддрд░рд╣ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рд╣рдХрд░реНрдореА рд╣рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:
- Nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдПрдХ рдкреБрд░рд╛рдиреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ ( рд╕рд┐рдЧреНрдиреЗрдЪрд░ v2 ) рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рдХреЗрдВрджреНрд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд░реИрдВрдХрдлрд░реНрдЯ рдореЗрдВ, рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА "рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдХреГрдкрдпрд╛ AWS4-HMAC-SHA256 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред " рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдПрдХ рдФрд░ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг ( рд╕рд┐рдЧреНрдиреЗрдЪрд░ v4 ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде nginx рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░-рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИрдВред
- Nginx рдХреЗ рд▓рд┐рдП рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рд╣реИ - ngx_aws_auth ред рд╕реНрд░реЛрдд рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ v4 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рд╡рд░реНрд╖ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдЧреАрдирдХреНрд╕ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рдирд╛ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рджрд░реНрджрдирд╛рдХ рдХрджрдо рд╣реЛрддрд╛ рд╣реИред
- рдЖрдк рдПрдХ рдЕрд▓рдЧ s3 рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдХрд╛рдлреА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЧреЛ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ - aws-s3 -xy: рдЗрд╕рдореЗрдВ рдбреЙрдХреНрдпреБрд╣рдм рдкрд░ рддреИрдпрд╛рд░-рддреИрдпрд╛рд░ рдФрд░ рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рдЫрд╡рд┐ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдиреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреНрдп рдШрдЯрдХ рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд░реЗрдЧрд╛ред
AWS рдмрдХреЗрдЯ рдкреЙрд▓рд┐рд╕реА рд▓рд╛рдЧреВ рдХрд░реЗрдВ
AWS, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рдбрд░рд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдореЗрдЬрд╝реЕрди рдиреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рднреА рдкрд╛рдпрд╛ -
рдПрд╕ 3 рдмрдХреЗрдЯ рдкреЙрд▓рд┐рд╕реА ред рдпрд╣ рддрдВрддреНрд░ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╛рд▓реНрдЯреА рдХреЗ рд▓рд┐рдП рд▓рдЪреАрд▓рд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд┐рдпрдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкреЙрд▓рд┐рд╕реА рдЬрдирд░реЗрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ - AWS рдкреЙрд▓рд┐рд╕реА рдЬрдирд░реЗрдЯрд░рдпрд╣рд╛рдВ рдХреБрдЫ рд░реЛрдЪрдХ рд╡рд┐рдХрд▓реНрдк рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдирд╕реЗ рдЖрдк рдмрд╛рдВрдз рд╕рдХрддреЗ рд╣реИрдВ:
- IP (
aws:SourceIp
), - рд░реЗрдлрд╝рд░ рд╣реИрдбрд░ (
aws:Referer
), - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рд╣реЗрдбрд░ (
aws:UserAgent
), - рдмрд╛рдХреА рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред
рдЖрдИрдкреА тАЛтАЛрдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреЗрд╡рд▓ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдпрджрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рдирд┐рд╡рд╛рд╕ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рдпрд╣ рджреБрд░реНрд▓рдн рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рд╕реЗ рд╕рдВрд▓рдЧреНрди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ
рдПрдХ рдЧреБрдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдпрд╛ рд╕рдВрджрд░реНрдн рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡
рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдлрд╛рдЗрд▓реЗрдВ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдЧреБрдкреНрдд рд╣реЗрдбрд░ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдРрд╕реА рд╣реА рдиреАрддрд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:
{ "Version": "2012-10-17", "Id": "http custom auth secret", "Statement": [ { "Sid": "Allow requests with my secret.", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::example-bucket-for-habr/*", "Condition": { "StringLike": { "aws:UserAgent": [ "xxxyyyzzz" ] } } } ] }
рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
"Version": "2012-10-17"
рдЖрдВрддрд░рд┐рдХ AWS рд░рд╕реЛрдИ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ;Principal
- рдЬреЛ рдЗрд╕ рдирд┐рдпрдо рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИред рдЖрдк рдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рдЦрд╛рддреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕рдХреА рдХреАрдордд "*"
- рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдо рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕рд╣рд┐рдд рд╕рднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;Resource
- ARN (рдЕрдореЗрдЬрд╝реЕрди рд╕рдВрд╕рд╛рдзрди рдирд╛рдо) рдмрд╛рд▓реНрдЯреА рдФрд░ рдмрд╛рд▓реНрдЯреА рдХреЗ рдЕрдВрджрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдиреАрддрд┐ рдЙрди рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдЬреЛ example-bucket-for-habr
;Condition
- рдпрд╣рд╛рдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬреЛ рдиреАрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╕рд░рдг рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рд╣реЗрдбрд░ рдХреА рддреБрд▓рдирд╛ xxxyyyzzz
рд▓рд╛рдЗрди рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдо рдПрдХ рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
$ curl -I https://s3.eu-central-1.amazonaws.com/example-bucket-for-habr/hello.txt HTTP/1.1 403 Forbidden $ curl -I https://s3.eu-central-1.amazonaws.com/example-bucket-for-habr/hello.txt -H 'User-Agent: xxxyyyzzz' HTTP/1.1 200 OK
рдпрд╣
рдирд┐рдХрдЯрддрд╛ рдХреЗ рд▓рд┐рдП
nginx рдХреЛ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
location /s3-media/ { limit_except GET { deny all; } set $aws_bucket "example-bucket-for-habr"; set $aws_endpoint "s3.eu-central-1.amazonaws.com:443"; set $aws_custom_secret "xxxyyyzzz"; proxy_set_header User-Agent $aws_custom_secret; rewrite ^/s3-media/(.*)$ /$aws_bucket/$1 break; proxy_buffering off; proxy_pass https://$aws_endpoint; }
рдирд┐рд╖реНрдХрд░реНрд╖
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдордиреЗ рдмрд╛рд▓реНрдЯреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдиреАрддрд┐ рд▓рд┐рдЦреА, рддреЛ рд╣рдореЗрдВ рдирд┐рдЧрдиреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдЖрдИрдкреА рд╕реЗ рдмрдВрдзреЗ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИрдВред
рдкреБрдирд╢реНрдЪ
рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ: