PHPカンファレンス福岡2017のスポンサーセッションでお話した「mrubyで作る海外IPフィルター」のスライドです。
ాฏ߁࿕(.01FQBCP *OD1)1ΧϯϑΝϨϯεԬNSVCZͰ࡞Δւ֎*1ϑΟϧλʔ
View Slide
ΠϯϑϥΤϯδχΞాฏ߁࿕!UBQSBϗεςΟϯάࣄۀ෦ΠϯϑϥνʔϜIUUQUBQJSBIBUFOBCMPHDPN
झຯ
(.0ϖύϘʹ͍ͭͯ
ϗεςΟϯά&$ࢧԉϋϯυϝΠυίϛϡχςΟ
͋ΔͷΞϥʔτ
ϨεϙϯεԆΛݕ8FCαʔόίϯςϯπͷϨεϙϯε࣌ؒࢹάϥϑ
ΞϥʔτݪҼΛௐࠪ
ΞϥʔτൃੜલͷΞΫηεݩͷࠃւ֎ຊࠃͷαʔϏεʹؔΘΒͣւ֎͕ଟͦͷଟ͕ͬ͘औΓߴෛՙΛ༩͑Δ߈ܸ
ւ֎͔ΒͷΞΫηε੍ݶ͕ඞཁ
ւ֎*1ϑΟϧλʔ
ւ֎*1ϑΟϧλʔͱւ֎*1ϑΟϧλʔ8FC4FSWFSւ֎͔ΒͷΞΫηεຊ͔ΒͷΞΫηε
ϩϦϙοϓʂʹ͓͚Δւ֎*1ϑΟϧλʔͰߟྀ͢Δ՝
ϩϦϙοϓʂେنɾߴूੵwར༻࣮ສਓwυϝΠϯສҎ্wΞΫηε૯ԯ ສඵwαʔόສυϝΠϯऩ༰ͷߴूੵ ˞݄࣌
ϩϦϙοϓʂେنɾߴूੵΏ͑ͷ՝௨͖͢ւ֎͔ΒͷΞΫηεΛڐՄಛఆͷϦΫΤετύεͰಈ࡞υϝΠϯ͝ͱʹ༗ޮɾແޮΓସ͑ϨεϙϯεΛԼͤ͞ͳ͍
௨͖͢ւ֎͔ΒͷΞΫηεΛڐՄwྫ͑ʜwେखݕࡧΤϯδϯͷΫϩʔϥͷେւ֎wΫϩʔϥΛϒϩοΫ͢ΔͱΠϯσοΫε͞Εͳ͍
ಛఆͷϦΫΤετύεͰಈ࡞wαΠτͬऔΓαʔόෛՙʹܨ͕ΔݪҼʹݶఆwରΛݶఆ͢Δ͜ͱʹΑΓෆཁͳఆॲཧΛ͙wѱҙͷͳ͍ւ֎ϢʔβͷӨڹΛ࠷খݶʹ
ւ֎*1ϑΟϧλʔυϝΠϯ͝ͱʹ༗ޮɾແޮΓସ͑ւ֎Λڋ൱͍ͨ͠υϝΠϯւ֎ΛڐՄ͍ͨ͠υϝΠϯwւ֎*1ϑΟϧλʔͷར༻Ϣʔβ͕ࣗ༝ʹબ8FC4FSWFS
ϨεϙϯεΛԼͤ͞ͳ͍wւ֎*1ϑΟϧλʔ༗ޮԽ࣌ʹԼΛײͤ͡͞ͳ͍wʮॏ͍͔Βແޮʹ͍ͨ͠ʯͱϢʔβʹࢥΘͤͳ͍
࣮
ϩϦϙοϓʂͷߏ
ϓϩΩγαʔόʔͱ8FC4FSWFSͷଟஈߏϦόʔεϓϩΩγ/HJOYɾɾɾ8αʔόςφϯτςφϯτɾɾɾɾɾɾ8αʔόςφϯτςφϯτ ɾɾɾΞΫηεΞΫηεΛదʹৼΓ͚
HFPJQϞδϡʔϧͰͷ࣮Λݕ౼
HFPJQϞδϡʔϧͱwOHJOYDPOGͰࠃίʔυΛ༻੍ͨ͠ݶ͕Մೳ# US(ΞϝϦΧ)ͱJP(ຊ)Λڋ൱map $geoip_country_code $allowed_country {default yes;US no;JP no;}
௨͖͢ւ֎͔ΒͷΞΫηεΛڐՄಛఆͷϦΫΤετύεͰಈ࡞υϝΠϯ͝ͱʹ༗ޮɾແޮΓସ͑ࠃ୯Ґͷڋ൱༰қ͕ͩଞͷ݅ͱΈ߹Θͤਏ͍
௨͖͢ւ֎͔ΒͷΞΫηεΛڐՄಛఆͷϦΫΤετύεͰಈ࡞υϝΠϯ͝ͱʹ༗ޮɾແޮΓସ͑ࠃ୯Ґͷڋ൱༰қ͕ͩଞͷ݅ͱΈ߹Θͤਏ͍ϩϦϙοϓʂͰཁ݅Λຬͨͨ͢Ίࡉ͔ͳઃఆΛߦ͍͍ͨ
͜ͷ՝Λղܾ͢ΔιϑτΣΞ
OHY@NSVCZNSVCZ
OHY@NSVCZͱw!NBUTVNPUPSZ͕։ൃwOHJOYͰNSVCZΛར༻͢ΔͨΊͷ֦ுϞδϡʔϧwOHJOYͷڍಈΛ3VCZͰ֦ுՄೳwύϑΥʔϚϯεྼԽ͕࠷খݶ
OHY@NSVCZͰཁ݅Λຬͨ͢ւ֎*1ϑΟϧλʔΛ࡞Δ
*1ͷࠃίʔυΛ.BY.JOE%#͔Βऔಘ͠ఆw*1ͱࠃίʔυΛඥ͚ͨ.BY.JOE%#Λར༻wSFNPUF@BEESมΑΓΞΫηεݩ*1औಘwऔಘͨ͠*1ͷࠃίʔυΛ.BY.JOE%#ΑΓऔಘwऔಘͨ͠ࠃίʔυ͕ڐՄͯ͠Α͍͔ఆ
6TFS"HFOUΛݩʹ௨͖͢ւ֎͔ΒͷΞΫηε͔ఆwIUUQ@VTFS@BHFOUมΑΓ6TFS"HFOUΛऔಘwऔಘͨ͠6TFS"HFOU͕௨͖͢ͷ͔ఆ
ϦΫΤετύεΛݩʹ੍ݶର͔ఆwSFRVFTU@VSJมΑΓϦΫΤετύεΛऔಘwऔಘͨ͠ϦΫΤετύε੍͕ݶର͔ఆ
ΞΫηεఆΛߦ͏ػೳΛOHY@NSVCZ͔Β؆ܿʹݺͼग़͢
NSVCZJQpMUFS
NSVCZJQpMUFSͷׂwIUUQTHJUIVCDPNQFQBCPNSVCZJQpMUFSw༷ʑͳଐੑΛͱʹڐՄɾڋ൱ͷఆwϦΫΤετύεɾ6TFS"HFOUɾΞΫηεݩࠃίʔυwQFSNJU ɾEFOZ ͱ͍͏ڞ௨ͷϝιουͰఆwࠓޙͦͷଞ༷ʑͳύϥϝʔλʹରԠ༧ఆ
༷ʑͳใΞΫηεʹΑΔύϑΥʔϚϯεྼԽΛ࠷খݶʹ͑Δ
NSVCZNTE
NSVCZNTEͷׂwIUUQTHJUIVCDPNQFQBCPNSVCZNTEw!QZBNBͱڞಉͰ։ൃwσʔλϕʔεɾωοτϫʔΫ,74ɾΠϯϝϞϦ,74ͷΞΫηεΛࣗಈͰ࠷దԽw.Z42-ɾ3FEJTɾ-.$ ΠϯϝϞϦͷ,74Λ࠾༻
NSVCZNTEΠϯϝϞϦ,74MPDBMNFNDBDIFωοτϫʔΫ,74ʢ3FEJTʣσʔλϕʔε.Z42-σʔλΞΫηεॲཧίετ͕͍σʔλετΞ͔ΒॱʹΞΫηεσʔλ͕ݟ͔ͭΓ࣍ୈฦ࣍͢ճҎ߱ͷΞΫηεͷͨΊʹΩϟογϡOHY@NSVCZ
ւ֎*1ϑΟϧλʔͷॲཧͷྲྀΕ
ւ֎*1ϑΟϧλʔͷॲཧ༰ւ֎*1ϑΟϧλʔւ֎*1ϑΟϧλʔ͕༗ޮͳαΠτʁ ࠷దԽ͞ΕͨσʔλετΞ:&463-ఆ 6TFS"HFOUఆ ࠃίʔυఆશͯʹ֘͠ͳ͍ΞΫηεͷΈ8αʔόʹసૹΞΫηε
·ͱΊ
·ͱΊwηΩϡϦςΟɾߴෛՙରࡦͱ͓٬༷ͷӨڹͷόϥϯεΛߟྀͨ͠ւ֎*1ϑΟϧλʔΛ࣮ͨ͠wࠃίʔυϦΫΤετใΛݩʹఆΛߦ͏ *1ϑΟϧλʔϞδϡʔϧwσʔλΞΫηε࠷దԽ͠େنڥద༻Մೳͱͨ͠
1)1Λ҆શɾշదʹ͏ͳΒϩϦϙοϓʂ
܅ϖύϘͰಇ͔ͳ͍͔ʁ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠