12.15Nginx优化、PHP优化

一、静态资源优化
1.静态资源
2.静态资源缓存
1)配置缓存过期时间
2)配置不走缓存
3.静态资源读取
1)文件高效读取
2)文件高效传输
3)长连接
4)长连接传输
4.静态资源压缩
1)静态资源压缩配置语法
2)压缩配置
3)上传文件
二、防资源盗链
1.配置被盗连的网站
2.配置盗链的网站
3.配置hosts访问测试
4.配置防盗链语法
5.配置防盗链
6.伪造请求头
7.允许多个域名盗链
三、跨域访问
1.盗链和跨域的区别
2.配置被跨域的网站
3.配置跨域网站
4.配置hosts测试
5.测试跨域访问
6.配置允许被跨域
四、CPU亲和
1.查看cpu状态
2.修改nginx配置
3.没有配置亲和的情况
4.配置cpu亲和
1)方式1
2)方式2
3)方式3
5.配置CPU亲和后
五、nginx通用优化文件
1.通用优化配置
2.nginx优化总结
六、PHP优化
1.配置PHP页面
2.php.ini配置文件优化
3.PHP危险函数
4.php-fpm服务配置
1)php-fpm.conf配置优化
2)包含配置文件优化 /etc/php-fpm.d/*.conf
5.php状态页
1)配置php
2)配置nginx
3)访问页面

一、静态资源优化

1.静态资源

在这里插入图片描述

2.静态资源缓存

服务器上:

  • Etag:服务器上的文件唯一标示
  • Last-Modified:服务器上的文件最后修改时间
  • Expires:文件缓存过期时间
  • Cache-Control:文件多久过期
    浏览器上:
  • If-None-Match:浏览器上的文件唯一标示 ===》对应服务器上的Etag
  • If-Modified-Since:浏览器上的文件最后修改时间 ===》对应服务器上的Last-Modified
    1)配置缓存过期时间
#语法
Syntax:	expires [modified] time;
		expires epoch | max | off;
Default:	expires off;
Context:	http, server, location, if in location

#配置
[root@web01 conf.d]# vim linux.cache.com.conf
server {
    listen 80;
    server_name linux.cache.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        expires 7d;
    }
}
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# cd /code/
[root@web01 code]# mkdir cache
[root@web01 code]# cd cache/
[root@web01 cache]# rz                                                                             
[root@web01 cache]# ll
total 1868
-rw-r--r-- 1 root root  156617 Dec  7 08:54 1.jpg
-rw-r--r-- 1 root root   47542 Dec  7 08:54 2.jpg
-rw-r--r-- 1 root root 1586108 Dec  7 08:54 3.jpg
-rw-r--r-- 1 root root  113900 Dec  7 09:28 4.jpg
[root@web01 cache]# chown -R www.www /code/cache/

2)配置不走缓存

方法一:使用无痕模式
方法二:开启浏览器上面的 Disable cache
方法三:配置nginx关闭缓存
[root@web01 conf.d]# vim linux.cache.com.conf
server {
    listen 80;
    server_name linux.cache.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        etag off;
        add_header Cache-Control no-cache;
        if_modified_since off;
    }
}
3.静态资源读取

1)文件高效读取

Syntax:	sendfile on | off;
Default:	sendfile off;
Context:	http, server, location, if in location

2)文件高效传输

#将多个数据打个包,一次推送,大文件适合此配置,需要开启 sendfile
Syntax:	tcp_nopush on | off;
Default:	tcp_nopush off;
Context:	http, server, location

3)长连接

Syntax:	keepalive_timeout timeout [header_timeout];
Default:	keepalive_timeout 75s;
Context:	http, server, location

4)长连接传输

#来一条数据传输一条数据,需要开启 keepalive
Syntax:	tcp_nodelay on | off;
Default:	tcp_nodelay on;
Context:	http, server, location
4.静态资源压缩

1)静态资源压缩配置语法

#开启压缩
Syntax:	gzip on | off;
Default:	gzip off;
Context:	http, server, location, if in location

#指定压缩文件的类型
Syntax:	gzip_types mime-type ...;
Default:	gzip_types text/html;
Context:	http, server, location

#指定压缩的级别,压缩比例
Syntax:	gzip_comp_level level;
Default:	gzip_comp_level 1;   #共1-9个级别,一般我们设置3-5
Context:	http, server, location

#压缩后传输使用的协议
Syntax:	gzip_http_version 1.0 | 1.1;
Default:	gzip_http_version 1.1;
Context:	http, server, location

2)压缩配置

[root@web01 cache]# vim /etc/nginx/conf.d/linux.gzip.com.conf 
server {
    listen 80;
    server_name linux.gzip.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        gzip on;
        gzip_types image/jpeg image/gif image/png;
       gzip_comp_level 9;
    }

    location ~* \.txt$ {
        root /code/cache;
        gzip on;
        gzip_types text/plain;
        gzip_comp_level 5;
    }
}

3)上传文件

[root@web01 cache]# ll -h
total 134M
-rw-r--r-- 1 www www 153K Dec  7 08:54 1.jpg
-rw-r--r-- 1 www www 125M Dec 15 09:38 1.png
-rw-r--r-- 1 www www 7.1M Dec 15 09:33 1.txt
-rw-r--r-- 1 www www  47K Dec  7 08:54 2.jpg
-rw-r--r-- 1 www www 1.6M Dec  7 08:54 3.jpg
-rw-r--r-- 1 www www 112K Dec  7 09:28 4.jpg

二、防资源盗链

1.配置被盗连的网站
[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location ~* \.(png|jpg|gif)$ {
        root /code;
        index index.html;
    }
}
[root@web01 ~]# systemctl restart nginx

#准备站点和文件
[root@web01 conf.d]# echo "我是被盗连的机器" > /code/index.html
[root@web01 code]# ll /code/
-rw-r--r--   1 www  www     31962 Dec 14 09:37 404.jpg
-rw-r--r--   1 www  www        25 Dec 15 10:18 index.html
2.配置盗链的网站
[root@lb01 ~]# vim /etc/nginx/conf.d/linux.daolian.com.conf
server {
    listen 80;
    server_name linux.daolian.com;

    location ~* / {
        root /code;
        index index.html;
    }
}
[root@lb01 ~]# systemctl restart nginx

#准备站点
[root@lb01 ~]# vim /code/index.html
<html>
	<body>
		<img src="http://linux.beidaolian.com/404.jpg">
	</body>
</html>
3.配置hosts访问测试
10.0.0.4 linux.daolian.com
10.0.0.7 linux.beidaolian.com

#windows访问
http://linux.daolian.com/
4.配置防盗链语法
Syntax:	valid_referers none | blocked | server_names | string ...;
Default:	—
Context:	server, location

none			#nginx日志中referer部分为空
blocked 		#nginx日志中referer部分没有协议
server_names	#nginx日志中referer部分为指定的域名
string			#nginx日志中referer部分为指定的域名(可以使用正则表达式)
5.配置防盗链
[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location / {
        root /code;
        index index.html;
    }

    location ~* \.jpg$ {
        root /code;
        valid_referers none blocked server_names;
        if ($invalid_referer) {
           return 500;
        }
    }
}
6.伪造请求头
#模拟请求头为 http://linux.daolian.com 访问图片
[root@lb01 ~]# curl -e "http://linux.daolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 500 Internal Server Error
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:51:41 GMT
Content-Type: text/html; charset=utf8
Content-Length: 177
Connection: close


#模拟请求头为 http://linux.beidaolian.com 访问图片
[root@lb01 ~]# curl -e "http://linux.beidaolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:52:24 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes
7.允许多个域名盗链
[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location / {
        root /code;
        index index.html;
    }

    location ~* \.jpg$ {
        root /code;
        valid_referers none blocked server_names *.baidu.com;
        if ($invalid_referer) {
           return 500;
        }
    }
}

[root@lb01 ~]# curl -e "http://www.baidu.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:58:27 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes

三、跨域访问

1.盗链和跨域的区别

盗链是由盗链的网站向被盗链的网站发起get请求获取内容
跨域是由跨域的网站向被跨域的网站发起一个完整http请求,甚至是完全跳转

2.配置被跨域的网站
[root@web01 conf.d]# vim linux.beikuayu.com.conf
server {
    listen 80;
    server_name linux.beikuayu.com;

    location / {
        root /code;
        index index.html;
    }   
}

#配置站点
[root@web01 conf.d]# echo "被跨域" > /code/index.html
3.配置跨域网站
[root@lb01 conf.d]# vim linux.kuayu.com.conf 
server {
    listen 80;
    server_name linux.kuayu.com;

    location ~* / {
        root /code;
        index index.html;
    }
}

#配置跨域的站点
[root@lb01 conf.d]# vim /code/index.html 
<html lang="en">
<head>
        <meta charset="UTF-8" />
        <title>测试ajax和跨域访问</title>
        <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type="text/javascript">
$(document).ready(function(){
        $.ajax({
        type: "GET",
        url: "http://linux.beikuayu.com",
        success: function(data) {
                alert("sucess 卧槽 卧槽 卧槽 成功了!!!");
        },
        error: function() {
                alert("fail!!,跨不过去啊,不让进去啊,只能蹭蹭!");
        }
        });
});
</script>
        <body>
                <h1>测试跨域访问</h1>
        </body>
</html>
4.配置hosts测试
#windows的hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com

[root@web01 conf.d]# vim /etc/hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com

[root@lb01 conf.d]# vim /etc/hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com
5.测试跨域访问
6.配置允许被跨域
[root@web01 conf.d]# vim linux.beikuayu.com.conf 
server {
    listen 80;
    server_name linux.beikuayu.com;

    location / {
        root /code;
        index index.html;
        #允许跨域的网站
        add_header Access-Control-Allow-Origin *;
        #允许跨域网站发起的请求类型
        add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS';
    }
}

四、CPU亲和

1.查看cpu状态
[root@web01 ~]# lscpu
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
NUMA node0 CPU(s):     0-3
2.修改nginx配置
[root@web01 ~]# vim /etc/nginx/nginx.conf 
worker_processes  4;

[root@web01 ~]# systemctl restart nginx
3.没有配置亲和的情况
[root@web01 ~]# ps -eo pid,args,psr | grep [n]ginx
  7549 nginx: master process /usr/   3
  7550 nginx: worker process         2
  7551 nginx: worker process         0
  7552 nginx: worker process         1
  7553 nginx: worker process         1
4.配置cpu亲和

1)方式1

worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;

worker_processes    16;
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 ...;

2)方式2

worker_processes    2;
worker_cpu_affinity 0101 1010;

3)方式3

worker_processes auto;
worker_cpu_affinity auto;
5.配置CPU亲和后
[root@web01 ~]# ps -eo pid,args,psr | grep [n]ginx
  7629 nginx: master process /usr/   3
  7630 nginx: worker process         0
  7631 nginx: worker process         1
  7632 nginx: worker process         2
  7633 nginx: worker process         3

五、nginx通用优化文件

1.通用优化配置
[root@nginx ~]# cat nginx.conf
user www;									#nginx启动用户
worker_processes auto;						 #nginx工作进程数
worker_cpu_affinity auto;					  #开启CPU亲和
error_log /var/log/nginx/error.log warn;	  #错误日志,存放路径,记录日志的级别
pid /run/nginx.pid;							#指定pid文件位置
worker_rlimit_nofile 35535;					 #指定nginx服务的最大打开文件数

events {
    use epoll;								#使用epoll网络模型
    worker_connections 10240;				 #worker工作进程的最大连接数
}

http {
    include             mime.types;				   #nginx能识别的文件类型
    default_type        application/octet-stream;   #nginx不识别的文件类型默认下载
    charset utf-8;								 #指定字符集

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';			#配置日志格式

    access_log  /var/log/nginx/access.log  main		#指定访问日志路径,调用日志的格式
    server_tokens off;							  #隐藏版本号
    client_max_body_size 200m;					   #上传文件大小限制
    sendfile            on;						   #高效读取
    tcp_nopush          on;							#高效传输
    #tcp_nodelay         on;						#实时传输
    keepalive_timeout   65;							#开启长连接
    gzip on;									  #开启压缩
    gzip_disable "MSIE [1-6]\.";					#指定不压缩的浏览器
    gzip_http_version 1.1;							#压缩后传输的协议
    gzip_comp_level 4;								#压缩的级别
    gzip_buffers 16 8k;								#压缩缓存
    gzip_min_length 1024;							#开启压缩的最小值
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/jpeg;		#压缩的文件类型
    include /etc/nginx/conf.d/*.conf;				#包含的配置文件
}

2.nginx优化总结

1、CPU亲和、worker进程数、调整nginx进程打开的文件句柄数
2、使用Epool网络模型、调整每个worker进程的最大连接数
3、文件的高效读取sendfile、nopush
4、文件的传输实时性、nodealy
5、开启tcp长连接,以及长连接超时时间keepalive_timeout
6、开启文件传输压缩gzip
7、开启静态文件expires缓存
8、隐藏nginx版本号
9、禁止通过ip地址访问,禁止恶意域名解析,只允许域名访问
10、配置防盗链、以及跨域访问
11、防DDOS、cc攻击,限制单IP并发连接,以及http请求
12、优雅显示nginx错误页面
13、nginx加密传输https优化
14、nginx proxy_cache、fastcgi_cache、uwsgi_cache 代理缓存,第三方工具(squid、varnish)

六、PHP优化

1.配置PHP页面
[root@web01 ~]# vim /etc/nginx/conf.d/php.conf
server {
    listen 80;
    server_name linux.phpserver.com;
    root /code/phpserver;
    index index.php;

    location ~* \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

#配置站点
[root@web01 ~]# mkdir /code/phpserver
[root@web01 ~]# vim /code/phpserver/index.php 
<?php
    phpinfo();
2.php.ini配置文件优化
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#; Error handling and logging ;
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
expose_php = Off                        # 关闭php版本信息
display_error = Off                     # 屏幕不显示错误日志(开发环境可以开启 on)
error_reporting = E_ALL                 # 记录PHP的每个错误
log_errors = On                         # 开启错误日志
error_log = /var/log/php_error.log      # 错误日志写入的位置(程序处理代码时的错误)
date.timezone = Asia/Shanghai           # 调整时区,默认PRC

#;;;;;;;;;;;;;;;;
#; File Uploads ;
#;;;;;;;;;;;;;;;;
file_uploads = On           # 允许文件上传
upload_max_filesize = 300M  # 允许上传文件的最大大小
post_max_size = 300M        # 允许客户端单个POST请求发送的最大数据
max_file_uploads = 20       # 允许同时上传的文件的最大数量
memory_limit = 128M         # 每个脚本执行最大内存
3.PHP危险函数
有时候为了安全我们需要禁掉一些PHP危险函数,整理如下需要的朋友可以参考下 
phpinfo() 
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 
危险等级:中

passthru() 
功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 
危险等级:高

exec() 
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。 
危险等级:高

system() 
功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。 
危险等级:高

chroot() 
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式 
PHP 时才能工作,且该函数不适用于 Windows 系统。 
危险等级:高

scandir() 
功能描述:列出指定路径中的文件和目录。 
危险等级:中

chgrp() 
功能描述:改变文件或目录所属的用户组。 
危险等级:高

chown() 
功能描述:改变文件或目录的所有者。 
危险等级:高

shell_exec() 
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。 
危险等级:高

proc_open() 
功能描述:执行一个命令并打开文件指针用于读取以及写入。 
危险等级:高

proc_get_status() 
功能描述:获取使用 proc_open() 所打开进程的信息。 
危险等级:高

error_log() 
功能描述:将错误信息发送到指定位置(文件)。 
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode, 
执行任意命令。 
危险等级:低

ini_alter() 
功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。 
具体参见 ini_set()。 
危险等级:高

ini_set() 
功能描述:可用于修改、设置 PHP 环境配置参数。 
危险等级:高

ini_restore() 
功能描述:可用于恢复 PHP 环境配置参数到其初始值。 
危险等级:高

dl() 
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。 
危险等级:高

pfsockopen() 
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。 
危险等级:高

syslog() 
功能描述:可调用 UNIX 系统的系统层 syslog() 函数。 
危险等级:中

readlink() 
功能描述:返回符号连接指向的目标文件内容。 
危险等级:中

symlink() 
功能描述:在 UNIX 系统中建立一个符号链接。 
危险等级:高

popen() 
功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。 
危险等级:高

stream_socket_server() 
功能描述:建立一个 Internet 或 UNIX 服务器连接。 
危险等级:中

putenv() 
功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数 
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。 
危险等级:高

#禁用方法如下: 
打开/etc/php.ini文件, 
查找到 disable_functions ,添加需禁用的函数名,如下: 
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,p
4.php-fpm服务配置

1)php-fpm.conf配置优化

[root@web02 ~]# vim /etc/php-fpm.conf
[global]
;pid = /var/log/php-fpm/php-fpm.pid     	#pid文件存放的位置
;error_log = /var/log/php-fpm/php-fpm.log   #错误日志存放的位置(启动时的日志)
;log_level = error                  	#日志级别, alert, error, warning, notice, debug
rlimit_files = 65535                	#php-fpm进程能打开的文件句柄数
;events.mechanism = epoll           	#使用epoll事件模型处理请求
include=/etc/php-fpm.d/*.conf

2)包含配置文件优化 /etc/php-fpm.d/*.conf

[root@web02 ~]# vim /etc/php-fpm.d/www.conf
[www]       				   #池名称
user = www  				   #进程运行的用户
group = www 				   #进程运行的组
;listen = /dev/shm/php-fpm.sock #监听在本地socket文件
listen = 127.0.0.1:9000         #监听在本地tcp的9000端口
;listen.allowed_clients = 127.0.0.1 #允许访问FastCGI进程的IP,any不限制 
pm = dynamic                    #管理方式(dynamic为动态,static为静态)
pm.max_children = 512           #最大启动的php-fpm进程数(静态管理,配置dynamic时失效)
pm.start_servers = 32           #动态方式下的起始php-fpm进程数量。
pm.min_spare_servers = 32       #动态方式下的最小php-fpm进程数量。
pm.max_spare_servers = 64       #动态方式下的最大php-fpm进程数量。
pm.max_requests = 1500          #达到这个请求数,子进程会重启,如果是0那就一直接受请求
pm.process_idle_timeout = 15s;  #没有请求时多久释放一个进程
pm.status_path = /php_status    #开启php的状态页面

php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/phpfpm_error.log
php_admin_flag[log_errors] = on
request_slowlog_timeout = 5s    #php脚本执行超过5s的文件
slowlog = /var/log/php_slow.log #记录至该文件中
5.php状态页

1)配置php

[root@web02 ~]# vim /etc/php-fpm.d/www.conf
pm.status_path = /php_status 		#开启php的状态页面

[root@web02 ~]# systemctl restart php-fpm

2)配置nginx

[root@web02 ~]# cat /etc/nginx/conf.d/php.conf
server {
	listen 80;
	server_name linux.php.com;
	root /code/php;
	index index.php;
	location ~* \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
	}
	location /status {
		stub_status;
	}
	location /php_status {
		fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
	}	
}

3)访问页面

#访问  http://linux.php.com/php_status
pool:                 www							#池名称
process manager:      dynamic						#动态管理
start time:           14/Sep/2020:18:52:12 +0800	  #启动时间
start since:          14							#启动了多久
accepted conn:        1								#连接数
listen queue:         0								#等待队列
max listen queue:     0								#最大等待队列
listen queue len:     511							#等待队列长度
idle processes:       4								#空闲的进程数
active processes:     1								#活跃的进程数
total processes:      5								#总的进程数
max active processes: 1								#最大的活跃进程数
max children reached: 0								#进程最大的限制连接数
slow requests:        0								#慢查询
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值