ãã®èšäºã§ã¯ãæãå
žåçãªã·ããªãªã§ã¯ãªããçããæš©å©ãããã·ããªãªã«ã€ããŠèª¬æããŸãã
å®éã«ã¯ãIISãä»ç€Ÿã®WebãµãŒããŒã®ãããã·ãšããŠäœ¿çšããŠããŸãã ãããã©ã®ããã«å®è£
ãããã©ã®ãããªå°é£ã«çŽé¢ãããã説æããŸãã
åé¡ã®å£°æäŸãšããŠãYouTrackãµãŒããŒãåæããŸãããã èŠèŠããsrv-youtrack-01.local.domainã§è¡šããã瀟å
ã®WebãµãŒããŒäžã«ãããŸãã ã¿ã¹ã¯ã¯ãçŸããååyt.company.ruã§ã€ã³ã¿ãŒãããããã¢ã¯ã»ã¹ã§ããããã«ããããšã§ãã ãã®å Žåãhttpsã䜿çšããå¿
èŠããããŸãã
å®è£
éå§ããã«ã¯ã
URL Rewriteã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ããã¯ãWebãã©ãããã©ãŒã ã€ã³ã¹ããŒã©ãŒã䜿çšããŠããŸãã¯
æåã§å®è¡ã§ããŸãã ã€ã³ã¹ããŒã«ãããšãIISãããŒãžã£ãŒã«æ°ããã·ã§ãŒãã«ããã衚瀺ãããŸã
URLã®æžãæããã

ãã®ããŒã«ã䜿çšãããšããéãããã·ãã¢ãã¬ã¹æžãæãã«ãŒã«ãäœæã§ããŸãã

ã«ãŒã«ãäœæãããšãããããã·ãè¡ããããµãŒããŒURLïŒhttpïŒ//ãã¬ãã£ãã¯ã¹ãªã-IISã¯èªåçã«è¿œå ããŸãïŒãæå®ããå¿
èŠããããŸãã ãã®çµæãç·šéå¯èœãªã«ãŒã«ãååŸããŸãã ãã¹ãŠã®ãªã¯ãšã¹ãã«é©çšãããããã§ã¯ãªããã«ã¹ã¿ãã€ãºå¯èœãªåºæºã«é©åãããªã¯ãšã¹ãã«ã®ã¿é©çšãããŸãã ãŸããURLããã³ãã¬ãŒãã«æºæ ããŠãããã©ããããã§ãã¯ããããã®åŸãä»ã®åºæºã«å¯Ÿãããã§ãã¯ã䜿çšãããŸãã

ããã«2ã€ã®æ¹æ³ãããããšãèšããªããã°ãªããŸãããæåã®æ¹æ³ã¯ãåãIISãµã€ãäžã®ããŸããŸãªãªãœãŒã¹ã«å¯ŸããŠããŸããŸãªURLãã¿ãŒã³ãæã€ã«ãŒã«ã®ã»ãããäœæããããšã§ãã 2ã€ç®ã¯ããããã·ããããªãœãŒã¹ããšã«ãµã€ããäœæããããããã«1ã€ã®ã«ãŒã«ãäœæããããšã§ãã æåã®ãã¹ããããžã§ãã€ã§ããããšãçè§£ããŠããã«ãããããããç§ã¯2çªç®ã®ãã¹ãéžæããŸãã-ããã»ã©çŸããã¯ãããŸãããã1ã€ã®ãµã€ãã«ééã£ãæ£èŠè¡šçŸãæžããŠãã¹ãŠã®ã«ãŒãã£ã³ã°ãå£ãå±éºã¯ãããŸãã ãããã£ãŠãã©ãã«ã§ãããURLãã¿ãŒã³ã®ããã©ã«ãã¯ãïŒã*ïŒãã§ãã
ããã§ãããŒã80ãš443ã®ãã€ã³ããŒãšãã¹ãåã®å¿
é 衚瀺ã䜿çšããŠãµã€ãyt.company.ruãäœæããIISãã¢ã¯ã»ã¹ããŠãããµã€ããèªèã§ããããã«ããŸãã 443ã®èšŒææžã®ååŸãšã€ã³ã¹ããŒã«ã«ã€ããŠã¯èšåããŸããã httpsã䜿çšããããã«ãµãŒãã¹èªäœãæ§æããå¿
èŠããªããšããäºå®ã«ã®ã¿æ³šç®ããŸãããããã¯ãŒã¯å
éšããæå·åãã人ã¯ããŸãããå€éšãªã¯ãšã¹ãã¯sslãä»ããŠãšããžãµãŒããŒã«æ¥ç¶ãããŸãã
å¿
é èŠä»¶ãhttpsã䜿çšããããšã§ããéããããŒã443ã«çä¿¡ããèŠæ±ã®ã¿ããããã·ããåçŽãªæ¡ä»¶ãäœæããŸãã äœæãããšãå¯èœãªãªãã·ã§ã³ã®ããããããŠã³ãªã¹ãã衚瀺ãããŸãã


ããŠã
yt.company.ruããã®ãã¹ãŠã®ãªã¯ãšã¹ãã¯ããŠãŒã¶ãŒã«å¯ŸããŠééçãªèŠèŠããååsrv-youtrack-01.local.domainã§å
éšãµãŒããŒã«ãããã·ãããŸãã
ãã ãããã¹ãŠã®
yt.company.ruãªã¯ãšã¹ã
㯠403ãšã©ãŒã§åæãããŸãããããã¯ããŸãè¯ããããŸããã ãã®åé¡ã解決ããã«ã¯ããªãã€ã¬ã¯ãä»ãã®index.htmlãäœæãããããã¢ã¯ã·ã§ã³ããã£ãŒã«ãã§ç®çã®URLãžã®æ°žç¶çãªãªãã€ã¬ã¯ããéžæããå¥ã®URLæžãæãã«ãŒã«ãäœæããŸãã

ãµã€ãã®ã«ãŒã«ã¯é çªã«é©çšããããããæåã«æ¡ä»¶ä»ãã®ã«ãŒã«ãé
眮ããæ¬¡ã«æ¡ä»¶ãªãã®ã«ãŒã«ãé
眮ããå¿
èŠããããŸãã åæã«ã2çªç®ã®ã«ãŒã«ã¯äŸå€ãªããã¹ãŠã®URLã«é©çšããããããæåã®ã«ãŒã«ã§ã¯ããåŸç¶ã®ã«ãŒã«ã®åŠçã忢ããããã§ãã¯ããã¯ã¹ããªã³ã«ããïŒãã§ãã¯ãããŸãŸã«ããïŒå¿
èŠããããŸãã

ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ãæäœãããšããµã€ãã®ã«ãŒãã«web.configãäœæãããäœæããããã¹ãŠã®ã«ãŒã«ãå«ãŸããŸãã ãããã£ãŠãå¥ã®ãµã€ãããããã·ããå Žåããããã®æäœãç¹°ãè¿ãå¿
èŠã¯ãããŸãããweb.configãã³ããŒããŠãã®äžã®å¿
èŠãªURLã倿Žããããã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠã³ããŒåŸã«ã«ãŒã«ã倿Žã§ããŸãã ããã«ãã€ã³ã¿ãŒãã§ã€ã¹ããŸã£ãã䜿çšããããšã¯ã§ããŸãããã奜ããªäººã«ããã«æžã蟌ãããšãã§ããŸãã
èœãšã穎[ã¢ãžã£ã€ã«ããŒã]ã¿ãã«ç§»åãããšãYouTrackã¯yt.company.ru/rest/agile/Overview-0/sprint/Iteration+24ãšãã圢åŒã®URLãçæããŸãã æ¬¡ã«ãã¹ãââãªã³ããåãæ¿ãããšã
yt.company.ru/rest/agile/Overview-0/sprint/Iteration%252023?q= ã ãããã®URLã«åãæ¿ãããšãIISã¯404ãšã©ãŒãè¿ãå§ããŸããã ããã¯ããªã¯ãšã¹ãããããã·ãããŠããªãããšã瀺ããŠããŸãã åæã«ã
yt.company.ru / issues / ITïŒq =ïŒ
23 {Current + work} + Assigned + toïŒ
3A + me + updatedïŒ
3A + {This + week}ã®åœ¢åŒã®ä¿åãããã¯ãšãªéã®é·ç§»ã¯ãéåžžã«æ£ããæ©èœããŸããã
åé¡ã®ããURLã®äžå€®ã«çå笊ã远å ããå®éšã¯ãIISã§ã¯ãªãYouTrackãµãŒããŒãã404ãšã©ãŒãåãåãå§ãããšããäºå®ã§çµãããŸããã ããã«ãããäœããã®çç±ã§IISïŒããã«ã¡ã¯ãMicrosoftïŒãURLãè§£éãããããä¿®æ£ããå¿
èŠããããšããèããåŸãããŸããã
ã¢ãã¬ã¹ã®äžå€®ã«ãããã©ã¹èšå·ã®åé¡ã¯ã
requestFiltering allowDoubleEscaping = "true"ãã©ã¡ãŒã¿ãŒã远å ããããšã§è§£æ±ºããŸããã
<system.webServer> <security> <requestFiltering allowDoubleEscaping="true" /> </security> </system.webServer>
ãããããã®åŸãã¹ããªã³ãéã®åãæ¿ãã¯ãŸã æ©èœããŸããã§ããã IISã¯ãã®ãããªèŠæ±ãå®å
šã§ãªããšèŠãªããŠããããšã倿ããŸããã ãã®ãã§ãã¯ãç¡å¹ã«ããå¿
èŠããããŸããã
<system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web>
ããã¯ããã¹ãŠã®æäœåŸã«web.configã倿ãããã®ã§ãã
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ProxyToYouTrack" patternSyntax="ECMAScript" stopProcessing="true"> <match url="(.*)" negate="false" /> <action type="Rewrite" url="http://srv-youtrack-01.local.domain/{R:1}" appendQueryString="true" logRewrittenUrl="true" /> <conditions> <add input="{SERVER_PORT}" pattern="443" /> </conditions> </rule> <rule name="redir to ssl" enabled="true" stopProcessing="true"> <match url="(.*)" /> <action type="Redirect" url="https://yt.company.ru" /> </rule> </rules> <outboundRules> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> <security> <requestFiltering allowDoubleEscaping="true" /> </security> </system.webServer> <system.web> <httpRuntime requestPathInvalidCharacters="" /> </system.web> </configuration>
ãŸãšãããããç§ãèŠã€ãã解決çã¯æé©ã§ã¯ãªãããã¹ãŠãé çªã«è§£æ±ºãã代ããã«ãç¹å®ã®ã±ãŒã¹ã«é©ããã«ãŒã«ãæ
éã«èŠå®ããå¿
èŠããããŸããã ããããä»ã§ã¯åäœããŸãã ããªãã®èããææ¡ãèããŠããããã§ãã
ãããã£ãŠãå€éšã¢ã¯ã»ã¹ãå¿
èŠãšãããã¹ãŠã®WebãµãŒããŒã¯ãnginxãapacheãsvnãgitlabããããWebã¢ã¯ã»ã¹ã亀æããçµç¹å
ã§çµ¶å¯Ÿã«ãããã·ãããŸãã
ç§ã解決çãæš¡çŽ¢ããäž»ãªåé¡ã¯ãå€ãã®ãã€ã¯ããœãããµãŒãã¹ã«å¿
èŠãªNTLMèªèšŒããããã·ãä»ããŠæ©èœããªãããšã§ãã æ»ãã TMG補åã䜿ããããªãã®ã§ãä»ã¯ã
Webã¢ããªã±ãŒã·ã§ã³ãããã·ãšåŒã°ããæ°ããWindows Server 2012 R2ãµãŒãã¹ãçè§£ããããšããŠããŸãããnginxãšapacheãã¡ãã£ãšèŠãŠããŸãããNTLMããããã·ããæ¹æ³ãããããŸããã
åç
§è³æ
http://www.ifinity.com.au/Blog/EntryId/60/404-Error-in-IIS-7-when-using-a-Url-with-a-plus-sign-in-the-pathstackoverflow.com/questions/2831142/asp-net-4-url-limitations-why-url-cannot-contain-any-3f-characters
倧ããªæŽæ°ïŒã³ã¡ã³ãã§ã¯ãhaproxyã詊ããŠã¿ãããšããå§ãããŸããã ãµã€ãã蚪åããåŸãntlmããŒãžãæ€çŽ¢ãããNTLMã®ããè¯ããµããŒããšéçãã¡ãŒã ã§ã®å¹çåäžã®ããã®å®å
šãªHTTPããŒãã¢ã©ã€ãããèŠã€ããŸããã
ã³ã³ãœãŒã«ã§ã®æ°æ¥éã®æŽ»çºãªéšãã®åŸããã®çŽ æŽãããããŒã«ãç¿åŸãããããã·ãµãŒããŒãšããŠIISãäžèŠã«ãªããŸããã ããã«é¢ããå¥ã®èšäºã¯æžã䟡å€ããªããšæãã®ã§ããããã¯ãæŽæ°ããããšã«ããŸããã
ãã®ãã¹ãŠãéåžžã«ç°¡åã§ãããã«åäœããŸãïŒ
1. apt-getã䜿çšããŠããã¯ããŒãããã€ã³ã¹ããŒã«ããŸãïŒDebianãæãŸããïŒ
2.èšå®ãæžã蟌ãŸããŸãã ãããã·ãããã¢ããªã±ãŒã·ã§ã³ã®èšå®ã¯ãããã«ä¿®æ£ãããŠããŸã
3. iptablesãæ°ãããããã·ã«åãæ¿ããŸã
2çªç®ã®ãã€ã³ãã«ã€ããŠè©³ãã説æããŸãã
ããã©ã«ãã»ã¯ã·ã§ã³ã«
èšå®ã远å ããŸãã
mode http balance roundrobin option redispatch http-send-name-header Host
æåŸã®é
ç®ã¯ããã¹ãåãããã¯ãšã³ãã«æž¡ãããããã«å¿
èŠã§ãããæ®ãã¯ãä»ã®ãã¹ãŠã®äººã®ããã«ãã§ãã
次ã«ã80ããã³443ããŒãã®ããã³ããšã³ããäœæãããŸãããããã¯ãããã€ãã®æ¡ä»¶ã«å¿ããŠãèŠæ±ãéä¿¡ããããã¯ãšã³ãããªãã¹ã³ããŠæ±ºå®ããŸãã ãããŠãç§ã¯1ã€ã®æ¡ä»¶ããæã£ãŠããŸãã-æ¥ããã¹ãåã
frontend http bind *:80
httpsã§ã¯ãããå°ãè€éã§ãã
è¿é£ã®ãããã¯ãå©ãã«ãªããŸããããã³ã¡ã³ãã§ã¯SNIã®äœ¿çšãæšå¥šãããŸããã ãããŠããã䜿çšããŸãã
frontend https bind *:443 ssl crt /etc/ssl/tfs.cer.ipk.pem crt /etc/ssl/yt.cer.ipk.pem crt /etc/ssl/crm.cer.ipk.pem crt /etc/ssl/git.cer.ipk.pem crt /etc/ssl/mail.cer.ipk.pem use_backend tfs if { ssl_fc_sni tfs.company.name } use_backend yt if { ssl_fc_sni yt.company.name } use_backend crm if { ssl_fc_sni crm.company.name } use_backend git if { ssl_fc_sni git.company.name } use_backend mail if { ssl_fc_sni mail.company.name }
ããã¯éåžžã«ã·ã³ãã«ã§ããããšã倿ããŸããïŒ ãŸãããã¹ãŠã®ããã¯ãšã³ãã«å¯ŸããŠèšŒææžãçæãããŸã-ãããã¯é¡§å®¢ã«äžããããŸãã ç§ã¯Microsoftã®PKIã䜿çšããŠãããããèŠæ±ã®çæããããã®èšŒææžã®çºè¡ãããã³ãããã·ãžã®è»¢éãå°ã工倫ããå¿
èŠããããŸããã ã¡ãªã¿ã«ã* .company.nameã®äœ¿çšã¯èš±å¯ãããŠããŸãããç¹ã«ãã®ãããªå°æ°ã®ããã¯ãšã³ãã§ã¯ãã©ããããããããŸãå
å®ã§ã¯ãªããšå€æããŸããã èšŒææžã®æºåãã§ããããäžèšã®äŸã®ããã«è¡ã«ããããæãã«æžããŠãããããã¯ãšã³ãã®ã«ãŒã«ãæžãå¿
èŠããããŸã-èšŒææžã¯é çªã«ã¹ãªãããããŸãã
sniã䜿çšããèšèšã¯éåžžã«åçŽãªã®ã§ã説æããå¿
èŠããããŸããã 確ãã«ãã»ãšãã©ã®Androidã¡ãŒã«ã¯ã©ã€ã¢ã³ãã¯sniã®æ¹æ³ãç¥ããªãïŒãŸãã¯æãŸãªãïŒããããã¹ãåãæå®ããã«ããŒã443ã«ãªã¯ãšã¹ããéä¿¡ããŸãã é¢ä¿ãããŸããïŒ ãã®ãããªå Žåã«ã¯
default_backend mail
ïŒã¡ãªã¿ã«ããã®å Žåãã©ã®èšŒææžãã¹ãªããããããã¯ç¢ºèªããŸããã§ããïŒ
ããã§ã¯ãããã¯ãšã³ãã«ã€ããŠèª¬æããŸãã httpã§ã¯ããã¹ãŠãç°¡åã§ãã
backend it server it.company.name srv-web-01 backend ar server ar.company.name srv-web-01
ããã§ã
it.company.nameã¯ãsrv-web-01ã«è»¢éããããã¹ãåã§ãã ãã®ãµãŒããŒäžã®IISã¯ãã¹ãåã«ããèªèšŒã䜿çšããããããããå¿
èŠã§ãã
httpsã®å Žåããããã¯ãã¶ã€ã³ã§ã
backend yt server yt.company.name srv-youtrack-01:80 backend tfs server tfs.company.name tfs:443 ssl verify none
ããã§ã¯ãããŒã80ãæå®ããŠSSLãã¢ã³ããŒãã§ããŸããã¯ã©ã€ã¢ã³ããšãããã·éã®ãã©ãã£ãã¯ã¯æå·åãããŸããããããã¯ãŒã¯å
ã«ã¯ãããŸããã ãŸããhttpsãåŒãç¶ã䜿çšã§ããŸãïŒãèšŒææžã«é害ãèŠã€ãããªããããšãæå³
ããããšã確èªããªãïŒã ãã ããã¯ã©ã€ã¢ã³ãã¯ãããã³ããšã³ãã®äœææã«å
¥åããèšŒææžãåŒãç¶ãåä¿¡ããããšãçè§£ããå¿
èŠããããŸãã æçµçãªãµãŒããŒèšŒææžãååŸããå¿
èŠãããå Žåã¯ãäžèšã®ãããã¯ã§èª¬æããæ¹æ³ã䜿çšã§ããŸãã
å¥ã®ãã€ã³ãïŒäžéšã®ãµãŒããŒã®httpãhttpsã«çŸãããªãã€ã¬ââã¯ããããã ãããè¡ãããã«ã
_ræ¥å°ŸèŸã䜿çšããŠç¹å¥ãªããã¯ãšã³ããäœæããŸãããããã«ãããçããæããªããŠãŒã¶ãŒãæ
éã«httpsã«ã¹ããŒãããŸãã
backend tfs_r
ã³ã¡ã³ãã¢ãŠããããè¡ãæèçã«åé€ããŸããã§ãã-ãã®ãããªãªãã·ã§ã³ã¯ããšããšäœ¿çšãããŠããŸãããããŠãŒã¶ãŒãé·ããªã³ã¯httpïŒ//site.company.name/lib/doc/Russian%20 lettersïŒ
20ïŒ
ãã¯ãªãã¯ãããšéåžžã«äžäŸ¿ã§ã20 titles.docxããããŠåœŒã¯åœŒã®ææžãèŠã€ããããšã®åžæãªãã§ã¡ã€ã³ããŒãžã«æããããŸããã 圌ã¯ãããéããŠåã³ãªã³ã¯ããã©ãããšããå¯èœæ§ããããŸãããåã³äœãåŸããããéåžžã«åæºããŸãã ãããé²ãããã«ã
ãªãã€ã¬ã¯ãã¹ããŒã httpsã³ã³ã¹ãã©ã¯ãã圹ç«ã¡ãŸããããã«ããããŠãŒã¶ãŒå
šäœãæ£ç¢ºã«ãªãã€ã¬ã¯ããããURLå
šäœã眮ãæããããŸãã
ããã¥ã¡ã³ãããŒãž
cbonte.imtqy.com/haproxy-dconv/configuration-1.5.html#4.2ã®èšå®ã®ãã¹ãŠã®åŸ®åŠãªè©³çް
ãæž
èŽããããšãããããŸããã ç§ã®çµéšã誰ãã«åœ¹ç«ã€ãšæããŸãã