威尼斯人线上娱乐

好端端功效检查评定接受,nginx做负载均衡器以致proxy缓存配置

30 10月 , 2019  

好端端功效检查评定接受,nginx做负载均衡器以致proxy缓存配置。nginx添加 nginx_heath模块,nginxnginx_heath

缘由?为何会选择nginx_heath
这几个模块,首如若如nginx+tomcat铺排的时,tomcat挂了今后nginx->upstream
轮询是足以踢掉挂掉的tomcat服务的,倘若计划的机器挂了以后nginx轮询是不可能踢掉的,要是服务再去央浼,就能够并发诉求超时!

1、ngx_http_proxy_module
模块和ngx_http_upstream_module模块(自带)
官方网站地址:
2、nginx_upstream_check_module模块
官方网站网址:
3、ngx_http_healthcheck_module模块
官方网站网站:

 

这几天根本金和利息用的是第三种缓慢解决情势:

1.添加nginx_heath模块

率先须求加上【nginx_upstream_check_module】模块:

./nginx -V

查阅已经增进的nginx模块如:–prefix=/opt/nginx-new
–with-http_ssl_module –with-http_v2_module
–with-http_stub_status_module –with-pcre

步入nginx源码中为nginx打补丁:patch -p0 <
../nginx_upstream_check_module-master/check_1.5.12+.patch,那几个需求卓殊的本子,不然会产出打补丁退步,假诺提醒没有patch命令的话,请先安装yum
-y install patch

追加nginx_upstream_check_module模块:–prefix=/opt/nginx-new
–with-http_ssl_module –with-http_v2_module
–with-http_stub_status_module –with-pcre
–add-module=/home/software/nginx_upstream_check_module-master

然后make

 

2.安插upstream参加健检

upstream name{

  server 10.144.48.157:8205;
  server 119.29.204.12:8889;
  check interval=3000 rise=2 fall=3 timeout=3000 type=tcp;
}

下面配置的意思是,对name那些负载均衡条约中的全数节点,各样3秒检测贰次,需要2次正准则标记realserver状态为up,假诺检查测量试验 5 次都未果,则标志realserver的事态为down,超时时间为1秒。

钦赐参数的野趣:

– interval:向后端发送的健检包的间距。

  • fall(fall_count):
    即使老是失利次数高达fall_count,服务器就被感觉是down。
  • rise(rise_count):
    假诺接二连三成功次数高达rise_count,服务器就被以为是up。
  • timeout: 后端健康要求的晚点时间。
  • default_down:
    设定初叶时服务器的景况,假若是true,就印证暗中同意是down的,要是是false,正是up的。暗中同意值是true,也正是一先导服务器感觉是不可用,要等健检包达到一定成功次数以往才会被感觉是寻常的。
  • type:健检包的花色,将来支撑以下种种类型
  • tcp:轻便的tcp连接,假使老是成功,就表明后端符合规律。
  • ssl_hello:发送多个发端的SSL hello包并收受服务器的SSL hello包。
  • http:发送HTTP央求,通过后端的复原包的情状来判断后端是还是不是存活。
  • mysql:
    向mysql服务器连接,通过选拔服务器的greeting包来判定后端是不是存活。
  • ajp:向后端发送AJP左券的Cping包,通过收到Cpong包来推断后端是不是存活。
  • port:
    钦赐后端服务器的检查端口。你能够钦点不相同于真实服务的后端服务器的端口,比方后端提供的是443端口的采取,你可以去反省80端口的动静来推断后端健康境况。暗许是0,表示跟后端server提供真正服务的端口同样。该选项现身于Tengine-1.4.0。

 

3.配置web页面

location /nstatus {
  check_status;
  access_log off;
}

如图:

威尼斯人线上娱乐 1

假若有down掉的如图

威尼斯人线上娱乐 2

 

其它还支持参数须求?status=up,展现出up状态的upstream。

nginx_heath模块,nginxnginx_heath
原因?为啥会采纳nginx_heath
这一个模块,首假诺如nginx+tomcat计划的时,tomcat挂了后头nginx-upstream
轮询是…

原稿链接地址:http://seanlook.com/2015/05/22/nginx-cache-check/

该模块可认为Tengine提供主动式后端服务器健检的效果与利益。

有关nginx的装置和中坚配备请仿效nginx,本文在原基础上到位以下多少个职能:
整合proxy和upstream模块完成nginx负载均衡
结合nginx_upstream_check_module
模块实现后端服务器的健检
使用nginx-sticky-module
举一反三模块达成Cookie会话黏贴(session-sticky效果)
行使proxy模块完毕静态文件缓存
使用ngx_cache_purge
兑现更加强硬的缓存消除功用

该模块在Tengine-1.4.0版本从前并未有默许开启,它能够在布置编译选项的时候开启:./configure
–with-http_upstream_check_module

1.
设置及模块表达
地点提到的3个模块都属于第三方扩张模块,供给超前下好源码,然后编写翻译时通过–add-moudle=src_path
一同安装。
注意:
使用 nginx_upstream_check_module(简记为m1)
时要先为nginx打上相应版本的patch,小编的nginx版本为 1.6.3,所以patch对应
m1 解压后目录下的check_1.5.12+.patch
,所以步入nginx源码目录,试行 patch -p1 …(见下方示例)
nginx-sticky-module-ng(简记为m2)
模块能够独自使用,然则因为m1监察和控制制检查查的方法是依据于m2的,所以要选取m2,还要对m1打上patch,步入m2源码目录,实行patch -p0…

编辑/etc/nginx/nginx.conf

编写翻译示例:(CentOS 6.5 x86_64, nginx 1.6.3)

http {

# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl--devel pcre pcre-devel# cd nginx-1.6.3# patch -p1 < ../nginx_upstream_check_module-0.3.0/check_1.5.12+.patch# cd ../nginx-sticky-module-ng-1.2.5# patch -p0 < ../nginx_upstream_check_module-0.3.0/nginx-sticky-module.patch# ./configure --prefix=/usr/local/nginx-1.6 --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --add-module=../nginx_upstream_check_module-0.3.0 --add-module=../nginx-sticky-module-ng-1.2.5 --add-module=../ngx_cache_purge-2.3# make && make install

    upstream cluster1 {

意气风发旦你想在已安装好的nginx上增加第三方模块,依旧须要重新编写翻译,但为了不掩瞒你本来的安排,请不要make
install,而是径直拷贝可实行文件:

        # simple round-robin

# nginx -V //可以看到原来的编译选项,下面用到
# ./configure ... --add-module=.. //你的第三方模块
# make //make后不要install,改用手动拷贝。先备份
# cp objs/nginx /usr/local/nginx-1.6/sbin/nginx

        server 192.168.30.116:80;

2.
nginx-sticky-module
连串地址:https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng
以此模块的功用是因而cookie黏贴的不二秘籍现在自同贰个客户端(浏览器)的乞请发送到同二个后端服务器上拍卖,那样必然水准上得以缓和多个backend
servers的session同步的主题素材 ——
因为不再须求一齐,而LANDXC60轮询格局一定要运营人士和谐思虑session同步的落到实处。
除此以外内置的 ip_hash
也能够兑现基于客商端IP来散发央求,但它相当的轻易变成负荷不均衡的状态,而黄金年代旦nginx前边有CDN互连网或许来自同风华正茂局域网的访谈,它选用的客商端IP是千篇后生可畏律的,轻松导致负荷不均衡现象。天猫Tengine的
ngx_http_upstream_session_sticky_module
也是相同的作用。nginx-sticky-module的cookie过期时间,默许浏览器关闭就过期,也正是会话形式。
以此模块并不适于不扶助 Cookie
或手动禁止使用了cookie的浏览器,那时暗中认可sticky就能切换来汉兰达奥迪Q7。它不可能与ip_hash同有时间接选举拔。

        #server 192.168.0.2:80;

威尼斯人线上娱乐 3

        check interval=3000 rise=2 fall=5 timeout=1000 type=http;

        check_http_send “HEAD / HTTP/1.0\r\n\r\n”;

nginx-lb-sticky.jpg

        check_http_expect_alive http_2xx http_3xx;

2.1
sticky配置

    }

upstream backend {
server 172.29.88.226:8080 weight=1;
server 172.29.88.227:8080 weight=1;
sticky;
}

    upstream cluster2 {

布局起来一流轻易,平时的话三个sticky
命令就够了。

        # simple round-robin

sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback];
:

        server 192.168.30.113:80;

name
: 可认为其它的 string 字符,默许是 route
domain
:哪些域名下得以采纳这些 cookie
path
:哪些路径对启用 sticky,比方 path/test,那么独有 test 那几个目录才会使用
sticky 做负载均衡
expires
:cookie 过期时间,暗中认可浏览器关闭就过期,也正是会话情势。
no_fallbackup
:如若设置了那个,cookie 对应的服务器宕机了,那么将会再次回到502(bad
gateway 大概 proxy error),提议不启用

        server 192.168.30.114:80;

您在翻看官方文书档案兴许会小心到中间也可能有个
sticky 指令,要说它们的功能大致是相似的,不过你也许注意到This directive
is available as part of our commercial subscription.
的验证 —— 那是nginx商业版本里才有的特性。包罗后边的check
指令,在nginx的经济贸易版本里也可以有对应的health_check
(配在 location )实现差不离千篇生机勃勃律的监察检查职能。
2.2
load-balance别的调治方案
那边顺带介绍一下nginx的载重均衡模块扶植的其他调解算法:
轮询
(默许) :
种种乞请定期间顺序依次分配到区别的后端服务器,若是后端某台服务器宕机,故障系统被自动删除,使顾客访谈不受影响。Weight
钦命轮询权值,Weight值越大,分配到的探访机率越高,主要用于后端每种服务器品质不均的意况下。
ip_hash

每种需要按访谈IP的hash结果分配,那样来自同贰个IP的访客固定访谈贰个后端服务器,有效缓和了动态网页存在的session分享难点。当然如若这一个节点不可用了,会发到下个节点,而那时候不曾session同步的话就收回掉了。
least_conn
: 央求被发送到当前活跃接连起码的realserver上。会思索weight的值。
url_hash

此方法按访谈url的hash结果来分配央求,使每一种url定向到同二个后端服务器,能够进一步进步后端缓存服务器的功效。Nginx本身是不帮忙url_hash的,假如须求运用这种调解算法,必得安装Nginx
的hash软件包 nginx_upstream_hash 。
fair

那是比地点四个进一步智能的载重均衡算法。此种算法可以依靠页面大小和加载时长智能地展开负荷均衡,也正是基于后端服务器的响合时间来分配供给,响合时间短的预先分配。Nginx本人是不支持fair的,假如急需运用这种调解算法,必得下载Nginx的
upstream_fair 模块。

        check interval=3000 rise=2 fall=5 timeout=1000 type=http;

3.
载重均衡与健检
严苛来讲,nginx自带是从未有过对准负载均衡后端节点的健检的,不过能够透过私下认可自带的
ngx_http_proxy_module 模块和 ngx_http_upstream_module
模块中的相关指令来成功当后端节点现身故障时,自动切换来下三个节点来提供访谈。
3.1
load-balance示例

        check_keepalive_requests 100;

upstream backend {
ip_hash;
server 172.29.88.226:8080 weight 2;
server 172.29.88.226:8080 weight=1 max_fails=2 fail_timeout=30s ;
server 172.29.88.227:8080 backup;
}
server {
location / {
proxy_pass http://backend;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
}

        check_http_send “HEAD / HTTP/1.1\r\nConnection:
keep-alive\r\n\r\n”;

weight
: 轮询权值也是能够用在ip_hash的,暗许值为1
max_fails

允许诉求战败的次数,默感觉1。当胜过最大次数时,重回proxy_next_upstream
模块定义的大错特错。
fail_timeout
: 有两层含义,一是在 30s 时间内最多可能 2 次失利;二是在经历了 2
次战败以往,30s光阴内不分配央浼到那台服务器。
backup

预先流出的备份机器。当其余全数的非backup机器现身故障的时候,才会呈请backup机器,由此那台机器的下压力最轻。(为啥小编的1.6.3本子里布署backup运转nginx时说invalid
parameter “backup”
?)
max_conns
: 约束同期连接受某台后端服务器的连接数,默以为0即无界定。因为queue
指令是commercial,所以依然保持暗中同意吧。

        check_http_expect_alive http_2xx http_3xx;

proxy_next_upstream
: 那个命令属于 http_proxy
模块的,钦点后端重返什么样的特别响合时,使用另叁个realserver

    }

3.2
nginx_upstream_check_module
nginx_upstream_check_module
是特意提供负载均衡器内节点的健检的外界模块,由Tmall的姚伟斌大神开拓,通过它能够用来检验后端
realserver 的例行状态。如若后端 realserver
不可用,则前边的央求就不会转接到该节点上,并不停车检查查几点的情状。在天猫本身的
tengine
上是自带了该模块。项目地址:https://github.com/yaoweibin/nginx\_upstream\_check\_module

下边的是二个带后端监察和控制制检查查的 nginx.conf 配置:

    server {

upstream backend {
sticky; # or simple round-robin
server 172.29.88.226:8080 weight=2;
server 172.29.88.226:8081 weight=1 max_fails=2 fail_timeout=30s ;
server 172.29.88.227:8080 weight=1 max_fails=2 fail_timeout=30s ;
server 172.29.88.227:8081;

check interval=5000 rise=2 fall=3 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
server {
location / {
proxy_pass http://backend;
}
location /status {
check_status;
access_log off;
allow 172.29.73.23;
deny all;
}

        listen 80;

上边配置的情致是,对name那个负载均衡条目款项中的全体节点,每一种5秒检查测验三次,诉求2次常常则标志realserver状态为up,假诺检查评定 3 次都未果,则标志realserver的场馆为down,超时时间为1秒。
check指令只可以出以往upstream中:
interval
: 向后端发送的健检包的间隔。
fall
: 借使连接失败次数达到fall_count,服务器就被以为是down。
rise
: 若是连接成功次数达到rise_count,服务器就被感觉是up。
timeout
: 后端健康央求的过期时间。
default_down

设定开头时服务器的景况,就算是true,就表明暗许是down的,假设是false,正是up的。默许值是true,也正是一同首服务器以为是不可用,要等健检包到达自然成功次数未来才会被感到是常规的。
type
:健检包的花色,现在支撑以下各类类型tcp
:轻易的tcp连接,倘使连接成功,就申明后端平常。
http
:发送HTTP央浼,通过后端的借尸还魂包的情形来决断后端是还是不是存活。
ajp
:向后端发送AJP合同的Cping包,通过接纳Cpong包来剖断后端是不是存活。
ssl_hello
:发送一个方始的SSL hello包并收受服务器的SSL hello包。
mysql
: 向mysql服务器连接,通过吸取服务器的greeting包来剖断后端是还是不是存活。
fastcgi
:发送三个fastcgi乞请,通过接纳剖判fastcgi响应来剖断后端是还是不是存活

        location /1 {

port
:
钦赐后端服务器的自小编斟酌端口。你能够内定分化于真实服务的后端服务器的端口,举个例子后端提供的是443端口的利用,你能够去反省80端口的场合来判别后端健康境况。暗中认可是0,表示跟后端server提供真正服务的端口同样。该选项现身于Tengine-1.4.0。

            proxy_pass ;

万风流倜傥 type 为 http ,你还足以行使check_http_send
来安插http监察和控制制检查查包发送的伸手内容,为了减削传输数据量,推荐使用 HEAD
方法。当使用长连接举办健检时,需在该指令中加多keep-alive央求头,如:
HEAD / HTTP/1.1\r\nConnection: keep-alive\r\n\r\n
。当使用 GET
方法的气象下,供给uri的size不宜过大,确认保证能够在1个interval内传输实现,不然会被健检模块视为后端服务器或网络极其。
check_http_expect_alive
点名HTTP回复的功成名就景色,私下认可感觉 2XX 和 3XX 的情景是常规的。

        }

威尼斯人线上娱乐 4

威尼斯人线上娱乐,        location /2 {

            proxy_pass ;

nginx-check-upstream

        }

        location /status {

威尼斯人线上娱乐 5

            check_status;

nginx-sticky-cookie.png

            access_log  off;

4.
nginx的proxy缓存使用
nginx的页面缓存功用与地点的载荷均衡和健检是绝非提到的,放在这一是因为懒得再起意气风发篇小说,二是再有load-balance的地点相符都会启用缓存的。
缓存也正是将js、css、image等静态文件从tomcat缓存到nginx钦点的缓存目录下,不只能够缓解tomcat担当,也足以加快访问速度,但与此相类似缓存及时清理成为了三个标题,所以需求ngx_cache_purge
以此模块来在逾期岁月未到前面,手动清理缓存。(这里有篇
文章,比较使用缓存、不应用缓存、使用情况分离二种情况下,高并发质量相比。使用代理缓存成效属性会凌驾相当多倍)

            allow SOME.IP.ADD.RESS;

http {
... // $upstream_cache_status记录缓存命中率
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$upstream_cache_status"';

proxy_temp_path /usr/local/nginx-1.6/proxy_temp;
proxy_cache_path /usr/local/nginx-1.6/proxy_cache levels=1:2 keys_zone=cache_one:100m inactive=2d max_size=2g;

server {
listen 80; 
server_name ittest.example.com;
root html;
index index.html index.htm index.jsp;

location ~ .*\.(gif|jpg|png|html|css|js|ico|swf|pdf)(.*) {
proxy_pass http://backend;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_cache cache_one;
add_header Nginx-Cache $upstream_cache_status;
proxy_cache_valid 200 304 301 302 8h;
proxy_cache_valid 404 1m;
proxy_cache_valid any 2d;
proxy_cache_key $host$uri$is_args$args;
expires 30d;
}

location ~ /purge(/.*) {
#设置只允许指定的IP或IP段才可以清除URL缓存。
allow 127.0.0.1;
allow 172.29.73.0/24;
deny all;
proxy_cache_purge cache_one $host$1$is_args$args;
error_page 405 =200 /purge$1;
}
}
}

            deny all;

说明
proxy_temp_path

缓存偶然目录。后端的响应并不直接再次回到客户端,而是先写到一个有的时候文件中,然后被rename一下当做缓寄放在
proxy_cache_path
。0.8.9本子之后允许temp和cache多少个目录在区别文件系统上(分区),可是为了减弱品质损失依然提出把它们设成三个文件系统上。
proxy_cache_path …
: 设置缓存目录,目录里的文书名是 cache_key 的MD5值。levels=1:2
keys_zone=cache_one:50m
意味着选取2级目录结构,Web缓存区名字为cache_one,内部存储器缓存空间尺寸为100MB,那个缓冲zone可以被频仍应用。文件系统上收看的缓存文件名相似于
/usr/local/nginx-1.6/proxy_cache/c/29/b7f54b2df7773722d382f4809d65029c
。inactive=2d max_size=2g
意味着2天未曾被访谈的内容自动消弭,硬盘最大缓存空间为2GB,抢先这么些高校将杀绝近来最少使用的数量。

        }

proxy_cache
: 援用前边定义的缓存区 cache_one

    }

proxy_cache_key
: 定义cache_key
proxy_cache_valid

为不一致的响应状态码设置分化的缓存时间,举个例子200、302等常规结果能够缓存的小时长点,而404、500等缓存时间设置短一些,那个日子到了文件就能够晚点,而不管是或不是刚被访谈过。
expires
: 在响应头里设置Expires:
或Cache-Control:max-age
,重返给顾客端的浏览器缓存失效时间。

}

有关缓存的失效期限方面有四个选项:X-Accel-Expires
、inactive
、proxy_cache_valid
、expires
,它们之间是有优先级的,按上边的各类借使在header里设置 X-Accel-Expires
则它的优先级最高,不然inactive优先级最高。越多材质请参照他事他说加以考查
nginx缓存优先级
或这里。

指令后边的参数意义是:

威尼斯人线上娱乐 6

interval:向后端发送的健检包的间距。

fall(fall_count):
假使三回九转战败次数达到fall_count,服务器就被以为是down。

nginx-cache-hit.png

rise(rise_count): 假若总是成功次数高达rise_count,服务器就被以为是up。

破除缓存
上述配置的proxy_cache_purge
指令用于方便的破除缓存,但必需比照第三方的 ngx_cache_purge
模块技术采纳,项目地址:https://github.com/FRiCKLE/ngx\_cache\_purge/

使用 ngx_cache_purge
模块毁灭缓存有2种方法(直接删除缓存目录下的文本也算风流洒脱种艺术):
echo发送PURGE指令proxy_cache_purge PURGE from 127.0.0.1
代表只同目的在于来源本地的扫除指令

timeout: 后端健康要求的过期时间。

# echo -e 'PURGE / HTTP/1.0\r\n' | nc 127.0.0.1 80

default_down:
设定开头时服务器的动静,假设是true,就证实暗许是down的,要是是false,就是up的。暗中认可值是true,也便是生龙活虎最初服务器感觉是不可用,要等健检包达到一定成功次数以往才会被以为是健康的。

GET情势倡议URubiconL即选拔布置文件中的location ~ /purge(/.*)
,浏览器访谈http://ittest.example.com/purge/your/may/path
来消弭缓存,大概echo -e ‘GET /purge/ HTTP/1.0\r\n’ | nc
ittest.example.com 80

type:健检包的连串,今后支撑以下多样类型

tcp:轻巧的tcp连接,若是总是成功,就证实后端符合规律。

威尼斯人线上娱乐 7

ssl_hello:发送一个带头的SSL hello包并收受服务器的SSL hello包。

http:发送HTTP乞求,通过后端的复原包的气象来判断后端是还是不是存活。

nginx-cache-purge.png

mysql: 向mysql服务器连接,通过收到服务器的greeting包来剖断后端是否存活。

参考
official
documentation
Nginx实战连串之功效篇—-后端节点健检
Tengine
nginx_upstream_check_module
nginx反向代理tomcat集群做负载均衡缓存
web内容缓存
nginx高品质缓存详解
利用nginx
sticky落成基于cookie的载重均衡

ajp:向后端发送AJP左券的Cping包,通过吸取Cpong包来推断后端是还是不是存活。

原稿链接地址:http://seanlook.com/2015/05/22/nginx-cache-check/

port:
钦赐后端服务器的检查端口。你能够钦点差别于真实服务的后端服务器的端口,比方后端提供的是443端口的使用,你能够去反省80端口的情况来判定后端健康景况。暗中认可是0,表示跟后端server提供真实服务的端口同样。该选项现身于Tengine-1.4.0。

check_http_send http_packet:

该指令能够配备http健检包发送的乞请内容。为了减小传输数据量,推荐使用”HEAD”方法。

当使用长连接举办健检时,需在该指令中增多keep-alive诉求头,如:”HEAD
/ HTTP/1.1\r\nConnection: keep-alive\r\n\r\n”。
同期,在采纳”GET”方法的情事下,央求uri的size不宜过大,确认保障能够在1个interval内传输完结,不然会被健检模块视为后端服务器或网络特别。

check_http_expect_alive:
该指令钦赐HTTP回复的中标景色,默许感到2XX和3XX的景况是正规的。

check_status:

来得服务器的正规状态页面。该指令要求在http块中安顿。

在Tengine-1.4.0未来,你可以配备展现页面包车型客车格式。支持的格式有: html、csv、
json。暗许类型是html。

你也能够因此伏乞的参数来钦定格式,要是‘/status’是您状态页面包车型地铁U奥迪Q3L,
format参数退换页面的格式,比如:

/status?format=html

/status?format=csv

/status?format=jsonfan

访谈检查评定页面:

威尼斯人线上娱乐 8

Tengine 的详实介绍:请点这里
Tengine 的下载地址:请点这里

CentOS 6.4制作Tengine的rpm包

Tengine动态开启模块试用

CentOS 6.3用ICC编译PHP5.4.8+Percona5.5.27+Tengine1.4.1

基于天猫商城Tengine和Scribe的WEB日志搜罗方案

基于Tengine部署LNMP环境

该模块在Tengine-1.4.0版本早先未有默许开启,它可以在布局编写翻译选项的时候开启…


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图