{"id":154,"date":"2021-04-26T15:33:13","date_gmt":"2021-04-26T07:33:13","guid":{"rendered":"https:\/\/blog.woniufun.com\/?p=154"},"modified":"2021-04-26T16:10:48","modified_gmt":"2021-04-26T08:10:48","slug":"%e7%bb%93%e5%90%88nginx%e7%bb%99yapi%e6%b7%bb%e5%8a%a0%e4%ba%8c%e7%ba%a7%e7%9b%ae%e5%bd%95%e8%ae%bf%e9%97%ae","status":"publish","type":"post","link":"https:\/\/blog.woniufun.com\/?p=154","title":{"rendered":"\u7ed3\u5408Nginx\u7ed9YAPI\u6dfb\u52a0\u4e8c\u7ea7\u76ee\u5f55\u8bbf\u95ee"},"content":{"rendered":"<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/YMFE\/yapi\">YAPI<\/a> \u662f\u9ad8\u6548\u3001\u6613\u7528\u3001\u529f\u80fd\u5f3a\u5927\u7684 api \u7ba1\u7406\u5e73\u53f0\u3002<br \/>\n\u5b89\u88c5\u5b98\u7f51\u90e8\u7f72\u4e4b\u540e\uff0c\u53ef\u4ee5\u901a\u8fc7 IP+PORT \u7684\u65b9\u5f0f\u8bbf\u95ee\u3002\u5982<code>http:\/\/127.0.0.1:3000\/<\/code><br \/>\n\u5982\u679c\u60f3\u7528nginx\u505a\u4ee3\u7406\uff0c\u5e76\u7528\u4e8c\u7ea7\u76ee\u5f55\u7684\u65b9\u5f0f\uff0c\u5982 <code>http:\/\/127.0.0.1\/docs\/<\/code>\uff0c\u7528\u4ee5\u4e0b\u914d\u7f6e\u5e76\u4e0d\u80fd\u76f4\u63a5\u751f\u6548<\/p>\n<pre><code class=\"language-nginx \">  location \/docs\/ {\n    proxy_pass http:\/\/127.0.0.1:3000\/;\n    proxy_set_header  X-Real-IP $remote_addr;\n    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;\n  }\n<\/code><\/pre>\n<p>\u8fd9\u662f\u56e0\u4e3a\uff0c\u524d\u7aef\u8d44\u6e90\u548c\u8def\u7531\uff0c\u5168\u90e8\u90fd\u662f\u57fa\u4e8e<code>\/<\/code>\u7684\uff0c\u5982<code>api<\/code>\uff0c\u5373\u4f7f\u4f60\u7528<code>http:\/\/127.0.0.1\/docs\/<\/code>\u8bbf\u95ee\uff0c\u8fd8\u662f\u4f1a\u8bf7\u6c42<code>http:\/\/127.0.0.1\/api\/<\/code>\uff0c\u6b64\u65f6\uff0c\u8fd8\u6709\u4e00\u4e2a\u529e\u6cd5\u5c31\u662f\u5728nginx\u4e2d\u5bf9\u6240\u6709yapi\u53ef\u4ee5\u8bf7\u6c42\u7684\u4e8c\u7ea7\u76ee\u5f55\u505a\u4ee3\u7406\u3002\u4f46\u662f\u4e0d\u63a8\u8350\u8fd9\u79cd\u65b9\u5f0f\u3002<\/p>\n<p>\u6709\u7f51\u53cb\u53d1\u4e86\u91cd\u65b0\u7f16\u8bd1\u7684\u65b9\u5f0f\uff0c\u56e0\u4e3a\u6211\u672c\u5730\u7f16\u8bd1\u5931\u8d25\uff0c\u6240\u4ee5\u6ca1\u6709\u9a8c\u8bc1\u3002<\/p>\n<p>\u6700\u540e\u6211\u81ea\u5df1\u7528\u4e86\u4e00\u4e2a\u6bd4\u8f83\u201c\u7b28\u201d\u7684\u65b9\u6cd5\uff1a<code>\u76f4\u63a5\u4fee\u6539\u7f16\u8bd1\u540e\u7684html\u3001css\u3001js\u6587\u4ef6\uff01<\/code><\/p>\n<p>\u8fd8\u597d\uff0c\u603b\u5171\u5c31\u4e09\u4e2a\u6587\u4ef6\u3002<\/p>\n<blockquote><p>\n  vendors\/static\/index.html<br \/>\n  \u5728\u8fd9\u91cc\u6dfb\u52a0\u4e00\u4e2a\u53d8\u91cf<code>window.baseurl<\/code>\uff0c\u540e\u9762js\u4e5f\u8981\u4f7f\u7528\u8fd9\u4e2a\u53d8\u91cf\uff0c\u8981\u4fee\u6539\u76ee\u5f55\u5c31\u8be5\u8fd9\u4e2a\u53d8\u91cf\u5c31\u884c\n<\/p><\/blockquote>\n<pre data-language=XML><code class=\"language-markup \">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n\n&lt;head&gt;\n    &lt;meta id=\"cross-request-sign\" charset=\"utf-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"&gt;\n    &lt;meta name=\"keywords\" content=\"yapi\u63a5\u53e3\u7ba1\u7406,api\u7ba1\u7406,\u63a5\u53e3\u7ba1\u7406,api,\u63a5\u53e3,\u63a5\u53e3\u6587\u6863,api\u6587\u6863,\u63a5\u53e3\u7ba1\u7406\u7cfb\u7edf\" \/&gt;\n    &lt;meta name=\"description\"\n        content=\"YApi \u662f\u9ad8\u6548\u3001\u6613\u7528\u3001\u529f\u80fd\u5f3a\u5927\u7684 api \u7ba1\u7406\u5e73\u53f0\uff0c\u65e8\u5728\u4e3a\u5f00\u53d1\u3001\u4ea7\u54c1\u3001\u6d4b\u8bd5\u4eba\u5458\u63d0\u4f9b\u66f4\u4f18\u96c5\u7684\u63a5\u53e3\u7ba1\u7406\u670d\u52a1\u3002\u53ef\u4ee5\u5e2e\u52a9\u5f00\u53d1\u8005\u8f7b\u677e\u521b\u5efa\u3001\u53d1\u5e03\u3001\u7ef4\u62a4 API\uff0cYApi \u8fd8\u4e3a\u7528\u6237\u63d0\u4f9b\u4e86\u4f18\u79c0\u7684\u4ea4\u4e92\u4f53\u9a8c\uff0c\u5f00\u53d1\u4eba\u5458\u53ea\u9700\u5229\u7528\u5e73\u53f0\u63d0\u4f9b\u7684\u63a5\u53e3\u6570\u636e\u5199\u5165\u5de5\u5177\u4ee5\u53ca\u7b80\u5355\u7684\u70b9\u51fb\u64cd\u4f5c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u63a5\u53e3\u7684\u7ba1\u7406\u3002\" \/&gt;\n    &lt;title&gt;YApi-\u9ad8\u6548\u3001\u6613\u7528\u3001\u529f\u80fd\u5f3a\u5927\u7684\u53ef\u89c6\u5316\u63a5\u53e3\u7ba1\u7406\u5e73\u53f0&lt;\/title&gt;\n    &lt;!-- &lt;link rel=\"icon\" type=\"image\/png\" sizes=\"192x192\" href=\"\/image\/favicon.png\"&gt; --&gt;\n    &lt;script&gt;\n        window.baseurl = '\/docs\/';\n        var link = document.createElement('link');\n        link.setAttribute('rel', 'icon');\n        link.setAttribute('type', 'image\/png');\n        link.setAttribute('sizes', '192x192');\n        link.setAttribute('href', baseurl + 'image\/favicon.png');\n        document.head.appendChild(link);\n        document.write('&lt;script src=\"' + baseurl + 'prd\/assets.js?v=' + Math.random() + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n\n    &lt;script&gt;\n        document.write('&lt;link rel=\"stylesheet\"  href=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['index.js'].css + '\" \/&gt;');\n    &lt;\/script&gt;\n\n&lt;\/head&gt;\n\n&lt;body&gt;\n    &lt;div id=\"yapi\" style=\"height: 100%;\"&gt;&lt;\/div&gt;\n\n\n    &lt;script&gt;\n        document.write('&lt;script src=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['manifest'].js + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n    &lt;script&gt;\n        document.write('&lt;script src=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['lib3'].js + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n    &lt;script&gt;\n        document.write('&lt;script src=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['lib2'].js + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n    &lt;script&gt;\n        document.write('&lt;script src=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['lib'].js + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n\n    &lt;script&gt;\n        document.write('&lt;script src=\"' + baseurl + 'prd\/' + window.WEBPACK_ASSETS['index.js'].js + '\"&gt;&lt;\\\/script&gt;');\n    &lt;\/script&gt;\n&lt;\/body&gt;\n\n&lt;\/html&gt;\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\u4fee\u6539css\u548cjs\u3002\u5b98\u65b9\u7f16\u8bd1\u7684.css\u548c.js\u6587\u4ef6\u76f4\u63a5\u4f7f\u7528\u4f1a\u62a5\u9519\uff0c\u9700\u8981\u4f7f\u7528.gz\u91cc\u9762\u7684\u6587\u4ef6\u3002<\/p>\n<pre><code class=\"language-shell \">$ cd vendors\/static\/prd\n$ #\u5220\u9664\u4e24\u4e2aindex\u3002\u8fd9\u91cc\u6587\u4ef6\u540d\u4ee5\u201c1.9.2\u201d\u4e3a\u51c6\uff0c\u5176\u4ed6\u7248\u672c\u8bf7\u81ea\u884c\u66ff\u6362\n$ rm -f index@0d94707b92cfe07218e7.css index@0d94707b92cfe07218e7.js\n$ gzip -d index@0d94707b92cfe07218e7.js.gz\n$ gzip -d index@0d94707b92cfe07218e7.css.gz\n$ #\u66ff\u6362\u8def\u7531\n$ sed -i \"s\/\\\"\\\/api\/window.baseurl+\\\"api\/g; \\\ns\/\\\"\\\/group\/window.baseurl+\\\"group\/g; \\\ns\/\\\"\\\/user\/window.baseurl+\\\"user\/g; \\\ns\/\\\"\\\/project\/window.baseurl+\\\"project\/g; \\\ns\/\\\"\\\/mock\/window.baseurl+\\\"mock\/g; \\\ns\/path:\\\"\\\/\/path:window.baseurl+\\\"\/g; \\\ns\/to:\\\"\\\/\/to:window.baseurl+\\\"\/g;\" \\\ns\/history.push(\\\"\\\/\/history.push(window.baseurl+\\\"\/g;\" \".\/index@0d94707b92cfe07218e7.js\"\n$ #\u66ff\u6362\u5b57\u4f53\u6587\u4ef6\u8def\u5f84\uff0c\u91cc\u9762\u7684\u201cdocs\u201d\u81ea\u884c\u66ff\u6362\u6210\u81ea\u5df1\u7684\u76ee\u5f55\n$ sed -i \"s\/\\\/iconfont\\\/\/\\\/docs\\\/iconfont\\\/\/g\" \".\/index@0d94707b92cfe07218e7.css\"\n$ #\u91cd\u65b0\u751f\u6210.gz\u6587\u4ef6\n$ gzip -c index@0d94707b92cfe07218e7.js &gt; index@0d94707b92cfe07218e7.js.gz\n$ gzip -c index@0d94707b92cfe07218e7.css &gt; index@0d94707b92cfe07218e7.css.gz\n<\/code><\/pre>\n<p>\u6b64\u65f6\uff0c\u7528\u4e0a\u9762\u7684nginx\u914d\u7f6e\u505a\u4ee3\u7406\uff0c\u5c31\u53ef\u4ee5\u7528 <code>http:\/\/127.0.0.1\/docs\/<\/code>\u8bbf\u95eeyapi\u9879\u76ee\u4e86\u3002<br \/>\n\u56e0\u4e3a\u6539\u7684\u90fd\u662f\u524d\u7aef\u9759\u6001\u8d44\u6e90\uff0c\u6240\u4ee5yapi\u670d\u52a1\u65e0\u9700\u91cd\u542f\uff0c\u53ea\u8981\u6d4f\u89c8\u5668\u6e05\u7406\u7f13\u5b58\u91cd\u65b0\u8bbf\u95ee\u5373\u53ef\u3002<\/p>\n<p>js\u4e2d\u66ff\u6362\u7684\u6587\u672c\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u539f\u5b57\u7b26<\/th>\n<th>\u66ff\u6362\u6210<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&#8220;\/api<\/td>\n<td>window.baseurl+&#8221;api<\/td>\n<\/tr>\n<tr>\n<td>&#8220;\/group<\/td>\n<td>window.baseurl+&#8221;group<\/td>\n<\/tr>\n<tr>\n<td>&#8220;\/user<\/td>\n<td>window.baseurl+&#8221;user<\/td>\n<\/tr>\n<tr>\n<td>&#8220;\/project<\/td>\n<td>window.baseurl+&#8221;project<\/td>\n<\/tr>\n<tr>\n<td>&#8220;\/mock<\/td>\n<td>window.baseurl+&#8221;mock<\/td>\n<\/tr>\n<tr>\n<td>path:&#8221;\/<\/td>\n<td>path:window.baseurl+&#8221;<\/td>\n<\/tr>\n<tr>\n<td>to:&#8221;\/<\/td>\n<td>to:window.baseurl+&#8221;<\/td>\n<\/tr>\n<tr>\n<td>history.push(&#8220;\/<\/td>\n<td>history.push(window.baseurl+&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>yapi\u5982\u4f55\u7528nginx\u4ee3\u7406\u6210\u4e8c\u7ea7\u76ee\u5f55\u8bbf\u95ee\uff0c\u751a\u81f3\u652f\u6301\u591a\u7ea7\u76ee\u5f55\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/posts\/154"}],"collection":[{"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=154"}],"version-history":[{"count":5,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/posts\/154\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=\/wp\/v2\/posts\/154\/revisions\/159"}],"wp:attachment":[{"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=154"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=154"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.woniufun.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=154"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}