[{"data":1,"prerenderedAt":439},["ShallowReactive",2],{"navigation":3,"post-\u002Fposts\u002F2018\u002Fdiary-20180420":20,"surroundPosts-\u002Fposts\u002F2018\u002Fdiary-20180420":426},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",{"id":21,"title":22,"body":23,"class":407,"cover":407,"coverSize":407,"date":408,"description":29,"draft":409,"extension":410,"hideComments":409,"location":407,"meta":411,"navigation":412,"path":413,"readingTime":414,"seo":419,"sitemap":420,"stem":421,"tags":422,"time":407,"weather":424,"__hash__":425},"posts\u002Fposts\u002F2018\u002F20180420.diary-20180420.md","日记 - 20180420",{"type":24,"value":25,"toc":405},"minimark",[26,30,38,41,44,47,50,53,72,75,78,81,84,87,395,398,401],[27,28,29],"p",{},"今天在一个非常低级的问题上耗了一天。",[27,31,32,33,37],{},"起因是我想把 ",[34,35,36],"code",{},"www.monkeyrun.net"," 设置为 http 自动 301 到 https 上，由于部署在阿里云的容器服务上，上面用的负载均衡，设置起来会稍微麻烦一点。",[27,39,40],{},"需要起一个 nginx 的容器，然后将 http 请求绑定到 nginx 的端口上，然后 nginx 再反向代理到 https 站点上",[27,42,43],{},"操作起来不复杂，但是发现一个很蛋疼的问题，设置好之后，80 端口和 443 端口的站点都访问不了了。",[27,45,46],{},"后来调试的时候，又发现，把 80 端口禁掉，443 端口竟然访问不了。",[27,48,49],{},"开始以为是负载均衡或者容器服务的配置问题，发工单给阿里的人，耗了几个小时，没给出啥有效的答案。",[27,51,52],{},"再后来发现，首页访问不了是因为服务端做了 api 请求，如果没有 api 请求的页面是可以访问的，所有的 api 请求返回 504 Gateway Timeout。",[27,54,55,56,59,60,63,64,67,68,71],{},"api 请求是通过 ",[34,57,58],{},"http-proxy-middleware","，代理到 ",[34,61,62],{},"api.www.monkeyrun.net"," 上去了，一直以为是因为这个中间件的问题。甚至把 nuxt 项目的架构都调整了，直接换成了 ",[34,65,66],{},"@nuxtjs\u002Faxios"," 和 ",[34,69,70],{},"@nuxtjs\u002Fproxy"," 两个组件，结果发现问题依然存在。",[27,73,74],{},"后来恼怒了，猜测会不会是 https 的请求代理到 http 的 api 上的问题，打算给 api 也搞个 https 证书，干脆全部上 https 试试。然后发现了真正的问题所在！",[27,76,77],{},"那就是，api 和前端站点因为都在一个 Docker 集群上，也是公用的一个负载均衡 😂，停了 80 端口，api 就挂了，因为 api 还没启用 https，当然访问不了了！傻逼了！",[27,79,80],{},"最终配置成功！",[27,82,83],{},"前端域名解析到负载均衡 A（外网 IP）上，https: 443 端口监听容器集群的 9080 端口，http: 80 端口监听容器集群的 80 端口",[27,85,86],{},"容器集群的 80 端口是 nginx，nginx 的配置为：",[88,89,94],"pre",{"className":90,"code":91,"language":92,"meta":93,"style":93},"language-nginx shiki shiki-themes material-theme-lighter github-light github-dark","user  nginx;\nerror_log  \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log warn;\npid        \u002Fvar\u002Frun\u002Fnginx.pid;\nevents {\n    worker_connections  65535;\n}\nhttp {\n    include       \u002Fetc\u002Fnginx\u002Fmime.types;\n    default_type  application\u002Foctet-stream;\n    log_format  main  '$remote_addr - $remote_user [$time_local] \"$request\" '\n                      '$status $body_bytes_sent \"$http_referer\" '\n                      '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n    access_log  \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log  main;\n    keepalive_timeout  65;\n    gzip  on;\n    server {\n        listen       80;\n        server_name  www.monkeyrun.net;\n        return 301 https:\u002F\u002F$host$request_uri;\n    }\n}\n","nginx","",[34,95,96,113,128,139,149,161,167,175,186,197,244,271,295,309,320,331,339,350,361,384,390],{"__ignoreMap":93},[97,98,101,105,109],"span",{"class":99,"line":100},"line",1,[97,102,104],{"class":103},"smGrS","user ",[97,106,108],{"class":107},"su5hD"," nginx",[97,110,112],{"class":111},"sP7_E",";\n",[97,114,116,119,122,126],{"class":99,"line":115},2,[97,117,118],{"class":103},"error_log ",[97,120,121],{"class":107}," \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log ",[97,123,125],{"class":124},"s39Yj","warn",[97,127,112],{"class":111},[97,129,131,134,137],{"class":99,"line":130},3,[97,132,133],{"class":103},"pid ",[97,135,136],{"class":107},"       \u002Fvar\u002Frun\u002Fnginx.pid",[97,138,112],{"class":111},[97,140,142,146],{"class":99,"line":141},4,[97,143,145],{"class":144},"sbsja","events",[97,147,148],{"class":107}," {\n",[97,150,152,155,159],{"class":99,"line":151},5,[97,153,154],{"class":103},"    worker_connections ",[97,156,158],{"class":157},"srdBf"," 65535",[97,160,112],{"class":111},[97,162,164],{"class":99,"line":163},6,[97,165,166],{"class":107},"}\n",[97,168,170,173],{"class":99,"line":169},7,[97,171,172],{"class":144},"http",[97,174,148],{"class":107},[97,176,178,181,184],{"class":99,"line":177},8,[97,179,180],{"class":103},"    include ",[97,182,183],{"class":107},"      \u002Fetc\u002Fnginx\u002Fmime.types",[97,185,112],{"class":111},[97,187,189,192,195],{"class":99,"line":188},9,[97,190,191],{"class":103},"    default_type ",[97,193,194],{"class":107}," application\u002Foctet-stream",[97,196,112],{"class":111},[97,198,200,203,206,210,214,217,220,222,225,228,230,233,236,238,241],{"class":99,"line":199},10,[97,201,202],{"class":103},"    log_format ",[97,204,205],{"class":124}," main",[97,207,209],{"class":208},"s_sjI","  '",[97,211,213],{"class":212},"sjJ54","$",[97,215,216],{"class":107},"remote_addr",[97,218,219],{"class":208}," - ",[97,221,213],{"class":212},[97,223,224],{"class":107},"remote_user",[97,226,227],{"class":208}," [",[97,229,213],{"class":212},[97,231,232],{"class":107},"time_local",[97,234,235],{"class":208},"] \"",[97,237,213],{"class":212},[97,239,240],{"class":107},"request",[97,242,243],{"class":208},"\" '\n",[97,245,247,250,252,255,258,261,264,266,269],{"class":99,"line":246},11,[97,248,249],{"class":208},"                      '",[97,251,213],{"class":212},[97,253,254],{"class":107},"status",[97,256,257],{"class":212}," $",[97,259,260],{"class":107},"body_bytes_sent",[97,262,263],{"class":208}," \"",[97,265,213],{"class":212},[97,267,268],{"class":107},"http_referer",[97,270,243],{"class":208},[97,272,274,277,279,282,285,287,290,293],{"class":99,"line":273},12,[97,275,276],{"class":208},"                      '\"",[97,278,213],{"class":212},[97,280,281],{"class":107},"http_user_agent",[97,283,284],{"class":208},"\" \"",[97,286,213],{"class":212},[97,288,289],{"class":107},"http_x_forwarded_for",[97,291,292],{"class":208},"\"'",[97,294,112],{"class":111},[97,296,298,301,304,307],{"class":99,"line":297},13,[97,299,300],{"class":103},"    access_log ",[97,302,303],{"class":107}," \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log  ",[97,305,306],{"class":124},"main",[97,308,112],{"class":111},[97,310,312,315,318],{"class":99,"line":311},14,[97,313,314],{"class":103},"    keepalive_timeout ",[97,316,317],{"class":157}," 65",[97,319,112],{"class":111},[97,321,323,326,329],{"class":99,"line":322},15,[97,324,325],{"class":103},"    gzip ",[97,327,328],{"class":124}," on",[97,330,112],{"class":111},[97,332,334,337],{"class":99,"line":333},16,[97,335,336],{"class":144},"    server",[97,338,148],{"class":107},[97,340,342,345,348],{"class":99,"line":341},17,[97,343,344],{"class":103},"        listen ",[97,346,347],{"class":157},"      80",[97,349,112],{"class":111},[97,351,353,356,359],{"class":99,"line":352},18,[97,354,355],{"class":103},"        server_name ",[97,357,358],{"class":107}," www.monkeyrun.net",[97,360,112],{"class":111},[97,362,364,368,371,374,376,379,381],{"class":99,"line":363},19,[97,365,367],{"class":366},"sVHd0","        return",[97,369,370],{"class":157}," 301",[97,372,373],{"class":107}," https:\u002F\u002F",[97,375,213],{"class":111},[97,377,378],{"class":107},"host",[97,380,213],{"class":111},[97,382,383],{"class":107},"request_uri;\n",[97,385,387],{"class":99,"line":386},20,[97,388,389],{"class":107},"    }\n",[97,391,393],{"class":99,"line":392},21,[97,394,166],{"class":107},[27,396,397],{},"后端域名解析到负载均衡 B（内网 IP）上，https: 443 端口监听容器集群的 9080 端口",[27,399,400],{},"node 将前端\u002Fapi 的所有请求代理到后端域名上，由于都在阿里云容器集群内，所以内网可通。",[402,403,404],"style",{},"html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":93,"searchDepth":115,"depth":115,"links":406},[],null,"2018-04-20",false,"md",{},true,"\u002Fposts\u002F2018\u002Fdiary-20180420",{"text":415,"minutes":416,"time":417,"words":418},"4 min read",3.055,183300,611,{"title":22,"description":29},{"loc":413},"posts\u002F2018\u002F20180420.diary-20180420",[423],"日记","天气晴☀️","aSUaFQsYuNwLkvta_1cgq8ohPFQkcjKFsBZupEbGTXg",[427,433],{"title":428,"path":429,"stem":430,"date":431,"description":432,"children":-1},"Windows 存储池 RAID1 虚拟磁盘降级的问题","\u002Fposts\u002F2018\u002Fwindows-storage-spaces-raid1-degraded","posts\u002F2018\u002F20180427.windows-storage-spaces-raid1-degraded","2018-04-27","今天早上看到监控邮件，git 和 nexus 服务都挂了，赶紧登录服务器看了下，果然，又是磁盘出问题了。存储池的一个 Mirror 的虚拟磁盘出现警告，提示已降级，其中一块物理磁盘显示“不正常：介质故障，IO 错误”，如下图：",{"title":434,"path":435,"stem":436,"date":437,"description":438,"children":-1},"日记 - 20180419","\u002Fposts\u002F2018\u002Fdiary-20180419","posts\u002F2018\u002F20180419.diary-20180419","2018-04-19","我发现，洗澡的那段时间是我的贤者时间。",1777580280336]