Site updated: 2022-11-08 12:20:57
This commit is contained in:
1 parent
1b945a292b
commit
53430dc3e3
106 files changed
+890
-180
No files matched your search
@@ -8,7 +8,7 @@
|
||||
<author>
|
||||
<name>Hito Li</name>
|
||||
</author>
|
||||
<updated>2022-11-04T07:21:00.000Z</updated>
|
||||
<updated>2022-11-08T02:05:00.000Z</updated>
|
||||
<category term="hito" />
|
||||
<category term="無言" />
|
||||
<category term="博客" />
|
||||
@@ -17,6 +17,278 @@
|
||||
<category term="心得体会" />
|
||||
<category term="技术分享" />
|
||||
<category term="踩坑" />
|
||||
<entry>
|
||||
<id>https://blog.jingxiyuan.cn/2022/11/08/Nginx%E9%85%8D%E7%BD%AE-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/</id>
|
||||
<title>Nginx配置-反向代理</title>
|
||||
<link rel="alternate" href="https://blog.jingxiyuan.cn/2022/11/08/Nginx%E9%85%8D%E7%BD%AE-%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/"/>
|
||||
<content type="html"><h4 id="引言"><a class="anchor" href="#引言">#</a> 引言</h4>
|
||||
<ul>
|
||||
<li>所有配置方法和介绍均来至于网络搜索汇总,主要用于方便后期巩固学习。</li>
|
||||
</ul>
|
||||
<h4 id="何为反向代理"><a class="anchor" href="#何为反向代理">#</a> 何为反向代理</h4>
|
||||
<ul>
|
||||
<li>在介绍反向代理之前,先来了解一下正向代理。</li>
|
||||
</ul>
|
||||
<p>__正向代理:__如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。<br />
|
||||
<img data-src="https://file.jingxiyuan.cn/images/2022/11/08/991a203be1ec82b36e1f326376617d40.png" alt="991a203be1ec82b36e1f326376617d40.png" /><br />
|
||||
__反向代理:__看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。<br />
|
||||
<img data-src="https://file.jingxiyuan.cn/images/2022/11/08/1c87e386a0ce624a3949bda443cf346d.png" alt="1c87e386a0ce624a3949bda443cf346d.png" /></p>
|
||||
<blockquote>
|
||||
<p>正向代理和反向代理的区别,一句话就是:如果我们客户端自己用,就是正向代理。如果是在服务器用,用户无感知,就是反向代理。</p>
|
||||
</blockquote>
|
||||
<h4 id="nginx配置文件"><a class="anchor" href="#nginx配置文件">#</a> Nginx 配置文件</h4>
|
||||
<ul>
|
||||
<li>
|
||||
<p>在学习 Nginx 之前,要熟知它的配置文件,毕竟,下面需要做的所有配置(反向代理、负载均衡、动静分离等),都是基于它的配置文件。</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Nginx 默认的配置文件是在安装目录下的 conf 目录下,后续对 Nginx 的使用基本上都是对此配置文件进行相应的修改。完整的配置文件,可以看一下文章最后。修改过 nginx.conf 配置文件,记得要重启 Nginx 服务(☆☆☆☆☆)</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>配置文件中有很多 #号,该符号表示注释内容,去掉所有以 #开头的段落,精简之后的配置文件内容如下(PS:其实注释掉的地方,都是一些功能的使用代码,需要用到的时候,取消注释即可):</p>
|
||||
</li>
|
||||
</ul>
|
||||
<figure class="highlight xml"><figcaption data-lang="XML"></figcaption><table><tr><td data-num="1"></td><td><pre># 主进程叫master,负责管理子进程,子进程叫worker</pre></td></tr><tr><td data-num="2"></td><td><pre># worker_processes配置项表示开启几个业务进程,一般和cpu核数有关</pre></td></tr><tr><td data-num="3"></td><td><pre>worker_processes 1;</pre></td></tr><tr><td data-num="4"></td><td><pre></pre></td></tr><tr><td data-num="5"></td><td><pre>events &#123;</pre></td></tr><tr><td data-num="6"></td><td><pre> worker_connections 1024;</pre></td></tr><tr><td data-num="7"></td><td><pre>&#125;</pre></td></tr><tr><td data-num="8"></td><td><pre></pre></td></tr><tr><td data-num="9"></td><td><pre>http &#123;</pre></td></tr><tr><td data-num="10"></td><td><pre> # include表示可以引入其他文件,此处表示引入http mime类型</pre></td></tr><tr><td data-num="11"></td><td><pre> include mime.types;</pre></td></tr><tr><td data-num="12"></td><td><pre> default_type application/octet-stream;</pre></td></tr><tr><td data-num="13"></td><td><pre> sendfile on;</pre></td></tr><tr><td data-num="14"></td><td><pre> keepalive_timeout 65;</pre></td></tr><tr><td data-num="15"></td><td><pre></pre></td></tr><tr><td data-num="16"></td><td><pre> # 虚拟主机,可以配置多个</pre></td></tr><tr><td data-num="17"></td><td><pre> server &#123;</pre></td></tr><tr><td data-num="18"></td><td><pre> listen 80;</pre></td></tr><tr><td data-num="19"></td><td><pre> server_name localhost;</pre></td></tr><tr><td data-num="20"></td><td><pre></pre></td></tr><tr><td data-num="21"></td><td><pre> location / &#123;</pre></td></tr><tr><td data-num="22"></td><td><pre> # 路径匹配之后,哪个目录下去匹配相应的网页,html是相对路径</pre></td></tr><tr><td data-num="23"></td><td><pre> root html;</pre></td></tr><tr><td data-num="24"></td><td><pre> index index.html index.htm;</pre></td></tr><tr><td data-num="25"></td><td><pre> &#125;</pre></td></tr><tr><td data-num="26"></td><td><pre></pre></td></tr><tr><td data-num="27"></td><td><pre> error_page 500 502 503 504 /50x.html;</pre></td></tr><tr><td data-num="28"></td><td><pre> location = /50x.html &#123;</pre></td></tr><tr><td data-num="29"></td><td><pre> root html;</pre></td></tr><tr><td data-num="30"></td><td><pre> &#125;</pre></td></tr><tr><td data-num="31"></td><td><pre> &#125;</pre></td></tr><tr><td data-num="32"></td><td><pre>&#125;</pre></td></tr></table></figure><p>去掉注释信息后,可以将 nginx.conf 配置文件分为三部分:</p>
|
||||
<ol>
|
||||
<li>全局块</li>
|
||||
</ol>
|
||||
<pre><code class="language-conf">worker_processes 1;
|
||||
</code></pre>
|
||||
<p>从配置文件开始到 events 块之间的内容,主要会设置一些影响 Nginx 服务器整体运行的配置指令,主要包括:配置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以及配置文件的引入等。</p>
|
||||
<p>上面这行 worker_processes 配置,是 Nginx 服务器并发处理服务的关键配置,该值越大,可以支持的并发处理量也越多,但是会受到硬件、软件等设备的约束。</p>
|
||||
<ol start="2">
|
||||
<li>events 块</li>
|
||||
</ol>
|
||||
<pre><code class="language-conf">events &#123;
|
||||
worker_connections 1024;
|
||||
&#125;
|
||||
</code></pre>
|
||||
<p>events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括:是否开启对多 work process 下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 work process 可以同时支持的最大连接数等</p>
|
||||
<p>上述例子就表示每个 work process 支持的最大连接数为 1024。这部分的配置对 Nginx 的性能影响较大,在实际中应该灵活配置。</p>
|
||||
<ol start="3">
|
||||
<li>http 块</li>
|
||||
</ol>
|
||||
<pre><code class="language-conf">http &#123;
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
server &#123;
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
location / &#123;
|
||||
root html;
|
||||
index index.html index.htm;
|
||||
&#125;
|
||||
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html &#123;
|
||||
root html;
|
||||
&#125;
|
||||
&#125;
|
||||
</code></pre>
|
||||
<p>这部分是 Nginx 服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。需要注意的是:http 块也可以包括 http 全局块、server 块。下面的反向代理、动静分离、负载均衡都是在这部分中配置</p>
|
||||
<p>__http 全局块:__http 全局块配置的指令包括:文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。</p>
|
||||
<p>__server 块:__这块和虚拟主机有密切关系,从用户角度看,虚拟主机和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。</p>
|
||||
<p>__location 块:__这块的主要作用是:基于 Nginx 服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是 IP 别名)之外的字符串(例如 前面的 /uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三方模块的配置也在这里进行。</p>
|
||||
<p>每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机。而每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。(☆☆☆☆☆)</p>
|
||||
<h4 id="反向代理配置"><a class="anchor" href="#反向代理配置">#</a> 反向代理配置</h4>
|
||||
<ol>
|
||||
<li>location 配置规则</li>
|
||||
</ol>
|
||||
<pre><code class="language-conf">location [ = | ~ | ~* | ^~ | @ ] /uri &#123;
|
||||
|
||||
&#125;
|
||||
|
||||
= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
|
||||
~:用于表示 uri 包含正则表达式,并且区分大小写。
|
||||
~*:用于表示 uri 包含正则表达式,并且不区分大小写。
|
||||
^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location
|
||||
后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。
|
||||
@: &quot;@&quot; 定义一个命名的 location,使用在内部定向时,例如 error_page
|
||||
/uri:不带任何修饰符,也表示前缀匹配,但是在正则匹配之后,如果没有正则命中,命中最长的规则
|
||||
/:通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default
|
||||
|
||||
* uri没有“/”结尾时,location /abc/def可以匹配/abc/defghi请求,也可以匹配/abc/def/ghi等。而有“/”结尾时,location /abc/def/不能匹配/abc/defghi请求,只能匹配/abc/def/anything这样的请求
|
||||
</code></pre>
|
||||
<ol start="2">
|
||||
<li>proxy_pass 配置规则</li>
|
||||
</ol>
|
||||
<pre><code class="language-conf">url结尾加上了/,相当于是绝对路径,则Nginx不会把location中匹配的路径部分加入代理uri。
|
||||
url结尾不加/,Nginx则会把匹配的路径部分加入代理uri。
|
||||
|
||||
情景1:
|
||||
proxy_pass后有/
|
||||
访问地址:http://localhost:8081/WCP.Service/wcp/modeladapter/download/asc.shtml
|
||||
最终代理:http://10.194.171.7:13082/modeladapter/download/asc.shtml
|
||||
location /WCP.Service/wcp/modeladapter/download/ &#123;
|
||||
proxy_pass http://10.194.171.7:13082/modeladapter/download/;
|
||||
&#125;
|
||||
访问地址:http://localhost:8081/model/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/model/asc.shtml
|
||||
location /model/ &#123;
|
||||
proxy_pass http://127.0.0.1:8082/model/;
|
||||
&#125;
|
||||
|
||||
情景2:
|
||||
proxy_pass后有/
|
||||
访问地址:http://localhost:8081/model/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/asc.shtml
|
||||
location /model/ &#123;
|
||||
proxy_pass http://127.0.0.1:8082/;
|
||||
&#125;
|
||||
|
||||
情景3:
|
||||
proxy_pass后没有/
|
||||
访问地址:http://localhost:8081/model/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/model/asc.shtml
|
||||
location /model/ &#123;
|
||||
proxy_pass http://127.0.0.1:8082;
|
||||
&#125;
|
||||
|
||||
情景4
|
||||
proxy_pass后没有/
|
||||
访问地址:http://localhost:8081/model/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/AAAmodel/asc.shtml
|
||||
location /model/ &#123;
|
||||
proxy_pass http://127.0.0.1:8082/AAA;
|
||||
&#125;
|
||||
|
||||
情景5
|
||||
proxy_pass后有/
|
||||
访问地址:http://localhost:8081/model/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/asc.shtml
|
||||
location /model &#123;
|
||||
proxy_pass http://127.0.0.1:8082/;
|
||||
&#125;
|
||||
|
||||
情景6
|
||||
proxy_pass后有/
|
||||
访问地址:http://localhost:8081/modelBBB/asc.shtml
|
||||
最终代理:http://127.0.0.1:8082/asc.shtml
|
||||
location /model &#123;
|
||||
proxy_pass http://127.0.0.1:8082/;
|
||||
&#125;
|
||||
</code></pre>
|
||||
<h4 id="nginx完整配置文件"><a class="anchor" href="#nginx完整配置文件">#</a> Nginx 完整配置文件</h4>
|
||||
<pre><code class="language-conf">#user nobody;
|
||||
worker_processes 1;
|
||||
|
||||
#error_log logs/error.log;
|
||||
#error_log logs/error.log notice;
|
||||
#error_log logs/error.log info;
|
||||
|
||||
#pid logs/nginx.pid;
|
||||
|
||||
events &#123;
|
||||
worker_connections 1024;
|
||||
&#125;
|
||||
|
||||
http &#123;
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
#log_format main '$remote_addr - $remote_user [$time_local] &quot;$request&quot; '
|
||||
# '$status $body_bytes_sent &quot;$http_referer&quot; '
|
||||
# '&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;';
|
||||
|
||||
#access_log logs/access.log main;
|
||||
|
||||
sendfile on;
|
||||
#tcp_nopush on;
|
||||
|
||||
#keepalive_timeout 0;
|
||||
keepalive_timeout 65;
|
||||
|
||||
#gzip on;
|
||||
|
||||
server &#123;
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
|
||||
#charset koi8-r;
|
||||
|
||||
#access_log logs/host.access.log main;
|
||||
|
||||
location / &#123;
|
||||
root html;
|
||||
index index.html index.htm;
|
||||
&#125;
|
||||
|
||||
#error_page 404 /404.html;
|
||||
|
||||
# redirect server error pages to the static page /50x.html
|
||||
#
|
||||
error_page 500 502 503 504 /50x.html;
|
||||
location = /50x.html &#123;
|
||||
root html;
|
||||
&#125;
|
||||
|
||||
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
|
||||
#
|
||||
#location ~ \.php$ &#123;
|
||||
# proxy_pass http://127.0.0.1;
|
||||
#&#125;
|
||||
|
||||
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
||||
#
|
||||
#location ~ \.php$ &#123;
|
||||
# root html;
|
||||
# fastcgi_pass 127.0.0.1:9000;
|
||||
# fastcgi_index index.php;
|
||||
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
|
||||
# include fastcgi_params;
|
||||
#&#125;
|
||||
|
||||
# deny access to .htaccess files, if Apache's document root
|
||||
# concurs with nginx's one
|
||||
#
|
||||
#location ~ /\.ht &#123;
|
||||
# deny all;
|
||||
#&#125;
|
||||
&#125;
|
||||
# another virtual host using mix of IP-, name-, and port-based configuration
|
||||
#
|
||||
#server &#123;
|
||||
# listen 8000;
|
||||
# listen somename:8080;
|
||||
# server_name somename alias another.alias;
|
||||
# location / &#123;
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
# &#125;
|
||||
#&#125;
|
||||
# HTTPS server
|
||||
#
|
||||
#server &#123;
|
||||
# listen 443 ssl;
|
||||
# server_name localhost;
|
||||
# ssl_certificate cert.pem;
|
||||
# ssl_certificate_key cert.key;
|
||||
|
||||
# ssl_session_cache shared:SSL:1m;
|
||||
# ssl_session_timeout 5m;
|
||||
|
||||
# ssl_ciphers HIGH:!aNULL:!MD5;
|
||||
# ssl_prefer_server_ciphers on;
|
||||
|
||||
# location / &#123;
|
||||
# root html;
|
||||
# index index.html index.htm;
|
||||
# &#125;
|
||||
#&#125;
|
||||
&#125;
|
||||
</code></pre>
|
||||
</content>
|
||||
<category term="Linux" scheme="https://blog.jingxiyuan.cn/categories/Linux/" />
|
||||
<category term="服务" scheme="https://blog.jingxiyuan.cn/categories/Linux/%E6%9C%8D%E5%8A%A1/" />
|
||||
<category term="Nginx" scheme="https://blog.jingxiyuan.cn/categories/Linux/%E6%9C%8D%E5%8A%A1/Nginx/" />
|
||||
<category term="Nginx" scheme="https://blog.jingxiyuan.cn/tags/Nginx/" />
|
||||
<category term="反向代理" scheme="https://blog.jingxiyuan.cn/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/" />
|
||||
<updated>2022-11-08T02:05:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://blog.jingxiyuan.cn/2022/11/04/%E8%AE%B0%E4%B8%80%E6%AC%A1Vue%E9%A1%B9%E7%9B%AE%E7%9A%84%E9%83%A8%E7%BD%B2/</id>
|
||||
<title>记一次Vue项目的部署</title>
|
||||
@@ -1197,7 +1469,7 @@ X-Frame-Options 三个参数:</p>
|
||||
<li>轮询(默认)</li>
|
||||
</ol>
|
||||
<p> <em>每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。</em></p>
|
||||
<pre><code class="language-yum">upstream my_server &#123;
|
||||
<pre><code class="language-conf">upstream my_server &#123;
|
||||
server 192.168.0.2:8080;
|
||||
server 192.168.0.3:8080;
|
||||
&#125;
|
||||
@@ -1217,7 +1489,7 @@ server &#123;
|
||||
<li>weight 权重策略</li>
|
||||
</ol>
|
||||
<p> <em>weight 代表权重,默认为 1,权重越高被分配的客户端越多,指定轮询几率。weight 和访问比率成正比,用于后端服务器性能不均的情况。</em></p>
|
||||
<pre><code class="language-yum">upstream my_server &#123;
|
||||
<pre><code class="language-conf">upstream my_server &#123;
|
||||
server 192.168.0.2:8080 weight=1;
|
||||
server 192.168.0.3:8080 weight=2;
|
||||
&#125;
|
||||
@@ -1237,7 +1509,7 @@ server &#123;
|
||||
<li>ip_hash</li>
|
||||
</ol>
|
||||
<p> <em>每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。</em></p>
|
||||
<pre><code class="language-yum">upstream my_server &#123;
|
||||
<pre><code class="language-conf">upstream my_server &#123;
|
||||
ip_hash;
|
||||
server 192.168.0.2:8080;
|
||||
server 192.168.0.3:8080;
|
||||
@@ -1258,7 +1530,7 @@ server &#123;
|
||||
<li>fair (第三方)</li>
|
||||
</ol>
|
||||
<p> <em>按后端服务器的响应时间来分配请求,响应时间短的优先分配。</em></p>
|
||||
<pre><code class="language-yum">upstream my_server &#123;
|
||||
<pre><code class="language-conf">upstream my_server &#123;
|
||||
server 192.168.0.2:8080;
|
||||
server 192.168.0.3:8080;
|
||||
fair;
|
||||
@@ -1287,21 +1559,4 @@ server &#123;
|
||||
<category term="负载均衡" scheme="https://blog.jingxiyuan.cn/tags/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/" />
|
||||
<updated>2022-09-27T06:45:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://blog.jingxiyuan.cn/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/</id>
|
||||
<title>解决Hexo+Shoka背景音乐无法播放的问题</title>
|
||||
<link rel="alternate" href="https://blog.jingxiyuan.cn/2022/09/26/%E8%A7%A3%E5%86%B3Hexo-Shoka%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90%E6%97%A0%E6%B3%95%E6%92%AD%E6%94%BE%E7%9A%84%E9%97%AE%E9%A2%98/"/>
|
||||
<content type="html"><p><em> 今天突然发现博客的音乐无法播放了。经过一顿查找,发现是因为 https://api.i-meto.com/meting/api 调用出错了。shoka 主题应该是通过这个网站提取音乐地址、图片等信息。通过断点发现网易播放列表还是能正常获取的,只是列表中的具体音乐、图片无法获取了。于是自己用获取的列表信息组装出正确的 url 问题基本解决。只针对网易播放列表,图片只能使用一张固定的。</em></p>
|
||||
<p><em> 解决方法如下:</em></p>
|
||||
<p><em> 到 themes\shoka\source\js_app 目录下打开 player.js 文件,在最底部 init (config) 下加入 vendorJs ('fancybox');,然后找到 56 行用下面的代码替换即可。</em></p>
|
||||
<figure class="highlight js"><figcaption data-lang="JavaScript"></figcaption><table><tr><td data-num="1"></td><td><pre><span class="token function-variable function">fetch</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">source</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="2"></td><td><pre> <span class="token keyword">var</span> list <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span></pre></td></tr><tr><td data-num="3"></td><td><pre></pre></td></tr><tr><td data-num="4"></td><td><pre> <span class="token keyword">return</span> <span class="token keyword">new</span> <span class="token class-name">Promise</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">resolve<span class="token punctuation">,</span> reject</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="5"></td><td><pre> source<span class="token punctuation">.</span><span class="token function">forEach</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token parameter">raw</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="6"></td><td><pre> <span class="token keyword">var</span> meta <span class="token operator">=</span> utils<span class="token punctuation">.</span><span class="token function">parse</span><span class="token punctuation">(</span>raw<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="7"></td><td><pre> <span class="token keyword">if</span><span class="token punctuation">(</span>meta<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="8"></td><td><pre> <span class="token keyword">var</span> skey <span class="token operator">=</span> <span class="token constant">JSON</span><span class="token punctuation">.</span><span class="token function">stringify</span><span class="token punctuation">(</span>meta<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="9"></td><td><pre> <span class="token keyword">var</span> playlist <span class="token operator">=</span> store<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>skey<span class="token punctuation">)</span></pre></td></tr><tr><td data-num="10"></td><td><pre> <span class="token keyword">if</span><span class="token punctuation">(</span>playlist<span class="token punctuation">)</span> <span class="token punctuation">&#123;</span></pre></td></tr><tr><td data-num="11">&lLine truncated
|
||||
<category term="极空间" scheme="https://blog.jingxiyuan.cn/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/" />
|
||||
<category term="Docker" scheme="https://blog.jingxiyuan.cn/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/" />
|
||||
<category term="Hexo" scheme="https://blog.jingxiyuan.cn/categories/%E6%9E%81%E7%A9%BA%E9%97%B4/Docker/Hexo/" />
|
||||
<category term="博客" scheme="https://blog.jingxiyuan.cn/tags/%E5%8D%9A%E5%AE%A2/" />
|
||||
<category term="Hexo" scheme="https://blog.jingxiyuan.cn/tags/Hexo/" />
|
||||
<category term="Shoka" scheme="https://blog.jingxiyuan.cn/tags/Shoka/" />
|
||||
<category term="背景音乐" scheme="https://blog.jingxiyuan.cn/tags/%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90/" />
|
||||
<updated>2022-09-26T11:30:00.000Z</updated>
|
||||
</entry>
|
||||
</feed>
|
||||
Reference in new issue
Block a user