目錄
概念
Nginx的優(yōu)勢和特點:
下載配置nginx(兩種方式編譯和yum)
編譯安裝,安裝依賴
?創(chuàng)建運行用戶、組
解壓nginx壓縮包
配置Nginx
?編譯安裝
修改權(quán)限
讓系統(tǒng)識別nginx的操作命令
配置
nginx命令
nginx的配置文件
全局配置
模塊
location的配置
1. root 指令:
2. alias 指令:
實現(xiàn)訪問狀態(tài)統(tǒng)計
對主機名實現(xiàn)訪問控制?
域名訪問
IP:端口訪問
身份驗證
概念
是一個高性能的開源的Web服務器軟件,也可以用作反向代理服務器、負載均衡器、以及HTTP緩存。它最初由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點開發(fā)。Nginx的設計目標是提供高性能、穩(wěn)定性和低資源消耗,特別適用于處理大量并發(fā)連接。它通常用于加速靜態(tài)內(nèi)容的傳輸,處理動態(tài)內(nèi)容的反向代理,以及作為負載均衡器分配流量到多個服務器。
Nginx的優(yōu)勢和特點:
-
nginx是一款高性能而且輕量級的web服務軟件。
-
提供靜態(tài)頁面服務。純文本格式的文件,一般都是以.htm格式為結(jié)尾的文件。
-
穩(wěn)定性一般(nginx的bug很多,更新迭代很快。)httpd阿帕奇在國內(nèi)用的比較少,國外主要還是他nginx開源(免費),阿里就是基于nginx二次開發(fā): tengine。
-
對于系統(tǒng)的資源消耗非常低,http協(xié)議(單臺物理服務器可以支撐并發(fā)量30000-50000臺,在工作中一般設為20000個左右,保持服務器穩(wěn)定。)
-
處理靜念頁面,可以直接提供靜態(tài)頁面的文件服務。html,圖片,動畫也可以。能夠高效的處理并且響應靜態(tài)頁面的請求。(靜態(tài)頁面)。
-
反向代理,可以通過反向代理實現(xiàn)負載均衡和高可用。
-
處理動態(tài)請求,nginx是把動態(tài)請求轉(zhuǎn)發(fā)到后端服務器,由專門處理動態(tài)請求的服務器進行處理。
-
支持加密的http協(xié)議:https。
-
支持虛擬主機
-
支持url重定向功能,頁面跳轉(zhuǎn)
-
自帶緩存機制,可以靜態(tài)頁面內(nèi)容,減輕后端服務器壓力
-
自帶日志記錄,訪問日志(哪些主機訪問了本機的nginx服務),報錯日志(訪問失敗的記錄,配置文件的錯誤,nginx啟動失敗的記錄)
-
可以支持模塊擴展,可以加載不同的模塊和自定義配置。
-
低內(nèi)存消耗:10000個keep-alive連接保持,只占3M不到的內(nèi)存11、支持熱部署,不停機更新配置文件,升級版本。
nginx在工作中主要的應用場景
1、靜態(tài)頁面服務
2、轉(zhuǎn)發(fā)動態(tài)請求
3、反向代理,負載均衡
4、緩存服務
5、連接保持和會話保持。
下載配置nginx(兩種方式編譯和yum)
編譯安裝,安裝依賴
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
?創(chuàng)建運行用戶、組
(Nginx 服務程序默認以 nobody 身份運行,建議為其創(chuàng)建專門的用戶賬號,以便更準確地控制其訪問權(quán)限)
useradd -M -s /sbin/nologin nginx
該命令是在Linux系統(tǒng)中使用useradd命令創(chuàng)建一個新用戶,并設置相關(guān)參數(shù)。具體解析如下:
-
useradd
: 這是創(chuàng)建新用戶的命令。 -
-M
: 該選項表示不創(chuàng)建用戶的家目錄(home directory)。通常,系統(tǒng)用戶(如nginx)不需要一個可登錄的家目錄,因此使用此選項可以避免創(chuàng)建不必要的目錄。 -
-s /sbin/nologin
: 該選項指定了用戶登錄時使用的shell。在這里,/sbin/nologin
是一個特殊的shell,它通常用于那些不允許登錄的用戶,例如系統(tǒng)服務用戶。使用這個shell可以有效地禁止該用戶登錄系統(tǒng)。 -
nginx
: 這是要創(chuàng)建的新用戶的用戶名,此處假設是為Nginx服務創(chuàng)建的用戶。
綜合起來,這個命令創(chuàng)建了一個名為nginx的用戶,不分配家目錄,而且設置了禁止登錄的shell,適用于作為服務用戶運行的情況,提高系統(tǒng)的安全性。
解壓nginx壓縮包
cd /opt/
tar -xf nginx-版本號.tar.gz
cd nginx-版本號/
配置Nginx
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
./configure --prefix=/usr/local/nginx \ --user=nginx \
指定用戶名
--group=nginx \
指定所在組
--with-http_ssl_module \
支持https協(xié)議
--with-http_v2_module \
支持http2.0協(xié)議
--with-http_realip_module \
支持從客戶端獲取真實ip。
--with-http_stub_status_module \
支持訪問nginx狀態(tài)信息的方法。
--with-http_gzip_static_module \
支持對頁面進行壓縮的功能
--with-pcre \
支持pcre庫的支持
--with-stream \
可以支持stream模塊,可以支持四層代理
--with-stream_ssl_module \
支持加密傳輸?shù)乃膶哟?--with-stream_realip_module
允許nginx從代理(proxy)協(xié)議的頭部獲取客戶端的真實ip地址。
?編譯安裝
make && make install
????????make: 這是一個用于構(gòu)建和編譯項目的命令。通常,在一個項目的根目錄中存在一個名為 "Makefile" 的文件,其中包含了一系列規(guī)則和命令,用于指導構(gòu)建過程。運行 make 命令將根據(jù)這些規(guī)則執(zhí)行相應的命令,以生成最終的可執(zhí)行文件或庫等。
make install: 一旦通過 make 構(gòu)建了軟件,make install 命令通常用于將生成的可執(zhí)行文件、庫文件等安裝到系統(tǒng)中。這可能涉及將文件復制到標準的系統(tǒng)目錄,以便其他用戶或系統(tǒng)進程可以訪問它們。
????????綜合起來,make && make install 是一個常見的軟件構(gòu)建和安裝過程的縮寫。首先,通過 make 構(gòu)建項目,然后通過 make install 將生成的二進制文件和相關(guān)資源安裝到系統(tǒng)中。這兩個步驟通常在軟件從源代碼編譯到可執(zhí)行文件并安裝到系統(tǒng)之間完成。
修改權(quán)限
將nginx以及其下的所有文件所屬組和所屬用戶改為nginx
chown -R nginx.nginx /usr/local/nginx
讓系統(tǒng)識別nginx的操作命令
????????優(yōu)化路徑:軟連接,將Nginx的可執(zhí)行文件鏈接到/usr/sbin/目錄,使得可以在系統(tǒng)中更方便地使用nginx命令。
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
????????檢測文件配置是否正確以及配置文件語法是否正確
nginx -t
配置
????????打開Nginx的Systemd服務配置文件的命令。Systemd是Linux系統(tǒng)中的一個初始化系統(tǒng)和服務管理器,用于在系統(tǒng)啟動時啟動和管理后臺服務。
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不對 啟動不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意啟動文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
創(chuàng)建目錄,方便管理
????????mkdir -p /usr/local/nginx/run/
修改配置文件
????????vim /usr/local/nginx/conf/nginx.conf
找到 pid的位置修改
????????pid /usr/local/nginx/run/nginx.pid;
這一行配置告訴Nginx在啟動時將主進程的PID寫入指定的文件中
重新加載配置
????????systemctl daemon-reload
????????systemctl start nginx.service
測試
????????vim /usr/local/nginx/html/index.html 100 dd 刪除原內(nèi)容
添加新內(nèi)容:
打開瀏覽器,訪問ip地址
yum安裝
????????yum安裝:編譯安裝和yum不要同時使用。兩個服務不要即yum安裝又編譯安裝,系統(tǒng)默認識別的是yum安裝。
????????yum -y install epel-release
????????yum -y install nginx
nginx命令
查看幫助信息:
nginx -h
查看Nginx的版本:
nginx -v
查看版本和Nginx的配置選項:
nginx -V
測試配置文件的正確性:
nginx -t
測試配置文件并顯示配置文件:
nginx -T
這個命令可以快速查看配置文件的內(nèi)容。
測試配置文件但只顯示錯誤信息:
nginx -q
發(fā)送信號,下面詳細介紹:
nginx -s
這個命令用于向Nginx主進程發(fā)送信號
設置前綴:
nginx -p
????????該命令用于設置Nginx的工作目錄前綴。
nginx的配置文件
全局配置
vim /etc/security/limits.conf
* soft nproc 65535
#*表示任意進程soft 軟限制nproc linux最多能夠開啟多個進程65535個
* hard nproc 65535
#硬限制,進程最多只能到65535.
* soft nofile 65535
* hard nofile 65535
#進程能夠打開的最大文件數(shù):65535個
????????只有改完上面文件并重啟虛擬機后,后面的events配置才能生效
vim /usr/local/nginx/conf/nginx.conf
#user nobody;
#運行用戶,編譯時未指定,默認就是nobaby
worker_processes 2;
#工作進程數(shù)量,根據(jù)cpu來進行配置,一般是cpu內(nèi)核數(shù)的2備,訪問量不大,1,足夠了
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid /usr/local/nginx/run/nginx.pid;
#指定nginx的pid文件位置。
#以上都是全局配置,對全局生效。
events {
worker_connections 10000;
#每個進程可以支持的并發(fā)連接數(shù),要修改limits.conf。服務器和用戶之間的網(wǎng)絡連接。
}
http {
#可以配置代理,緩存 定義日志,虛擬主機和第三方的模塊功能。
include mime.types;
events {
worker_connections 10000;
#每個進程可以支持的并發(fā)連接數(shù),要修改limits.conf。服務器和用戶之間的網(wǎng)絡連接。
}
http {
#可以配置代理,緩存 定義日志,虛擬主機和第三方的模塊功能。
include mime.types;
default_type application/octet-stream;
#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 logs/access.log main;
sendfile on;
#支持下載功能
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#連接保持,但是秒
gzip on;
#開啟gzip的壓縮模式,也就是對頁面進行壓縮
server {
#server模塊就是nginx的虛擬主機模塊,只能寫在http模塊中。
listen 80;
#虛擬主機的監(jiān)聽端口 80.
server_name localhost;
#虛擬主機的域名,可以有多個,要用逗號隔開。
charset utf-8;
#網(wǎng)頁的默認字符集。
#access_log logs/host.access.log main;
location / {
#指定虛擬主機的默認工作目錄。一個server可以有多個location.
root html;
index index.html index.htm;
}
模塊
-
nginx 配置文件有三部分組成
-
全局模塊:用戶和工作進程
-
events模塊:配置連接數(shù)
-
http模塊:代理地址,日志,虛擬主機等都在http
一個http模塊中,可以有多個server快,server模塊只能在http模塊之中。
location模塊只能寫在server模塊當中,一個server模塊可以有多個location(匹配工作目錄。)
-
events
模塊:-
????????主要用于配置全局事件處理選項,如連接超時、工作進程數(shù)等。
-
配置Nginx如何處理網(wǎng)絡事件。
-
http
模塊:-
????????主要用于配置全局HTTP服務器選項。
-
定義HTTP服務器塊,包括
server
塊的配置。 -
配置HTTP請求和響應的相關(guān)設置,如緩存、代理、日志等。
-
server
模塊:-
????????用于定義虛擬主機(多個網(wǎng)站共享一個服務器的情況)的配置。
-
配置監(jiān)聽的端口、主機名、SSL、代理等。
-
location
模塊:-
????????用于定義請求匹配位置的配置。
-
配置請求的URI匹配規(guī)則,如正則表達式或前綴匹配。
-
定義請求的處理方式,如代理、重定向、訪問控制等。
-
-
Proxy
模塊: -
????????proxy 模塊是 Nginx 的核心模塊之一,用于實現(xiàn)反向代理功能。
-
它允許將客戶端的請求代理到后端的服務器,并將響應返回給客戶端。
-
proxy 模塊支持 HTTP、HTTPS、FastCGI、uWSGI、SCGI 等多種協(xié)議。
-
通過配置 proxy_pass 指令,可以指定代理的后端服務器地址。
-
-
Headers
模塊: -
????????headers 模塊用于處理 HTTP 請求和響應的頭部信息。它允許添加、修改或刪除請求頭和響應頭,實現(xiàn)對頭部信息的定制化控制。headers 模塊提供了一系列的指令,
-
如 addheader、setheader、moresetheaders 等,用于操作頭部信息。
-
upstream
模塊:-
????????用于定義負載均衡池,通常在反向代理中使用。用于配置反向代理服務器組(也稱為上游服務器組)
-
配置后端服務器的地址、權(quán)重和其他參數(shù)。
-
它定義了后端服務器的列表和相關(guān)的負載均衡策略,用于分發(fā)請求到后端服務器。
-
upstream 模塊通過 upstream 塊來配置后端服務器組,其中包括 server 指令用于定義后端服務器。
-
stream
模塊:-
????????stream 模塊是 Nginx 的流處理模塊,用于配置Nginx的TCP/UDP代理。
-
適用于代理非HTTP流量,如數(shù)據(jù)庫連接、DNS請求等。
-
mail
模塊:-
????????用于配置Nginx郵件代理服務器的選項。
-
包括配置郵件代理服務器的監(jiān)聽端口、SMTP、IMAP等。
-
它提供了 TCP/UDP 代理、負載均衡、數(shù)據(jù)包過濾等功能。stream 模塊通過 stream 塊來配置流的處理規(guī)則,可以根據(jù)目標地址和端口等條件進行流量的轉(zhuǎn)發(fā)和處理。
-
每個模塊都有特定的配置指令,用于控制不同方面的服務器行為。通過組合這些模塊和指令,可以根據(jù)需求配置Nginx服務器的各個方面,包括HTTP、負載均衡、反向代理、靜態(tài)文件服務等。注意,Nginx的配置文件結(jié)構(gòu)允許嵌套和繼承,以實現(xiàn)更復雜的配置需求。
location的配置
location / {
# 這里是針對根路徑 / 的配置
# 包括處理請求的方式、代理設置、緩存設置等
}
1. root
指令:
????????root
指令用于定義服務器塊中所有 location
塊的文件系統(tǒng)根目錄。這意味著 root
設置的路徑會與 URI 進行拼接,以構(gòu)建完整的文件系統(tǒng)路徑。示例:
server {
listen 80;
server_name example.com;
root /path/to/your/web/root;
location / {
# 此時訪問 http://example.com/index.html 會映射到 /path/to/your/web/root/index.html
}
}
2. alias
指令:
????????alias
指令用于為特定的 location
指定一個與 URI 不同的文件系統(tǒng)路徑。這意味著 URI 的一部分會被替換為 alias
指定的路徑。示例:
server {
listen 80;
server_name example.com;
location /static/ {
alias /path/to/your/static/files/;
# 訪問 http://example.com/static/image.jpg 會映射到 /path/to/your/static/files/image.jpg
}
}
nginx是通過alias設置虛擬目錄,在nginx的配置中,alias目錄和root目錄是有區(qū)別的:
????????1)alias指定的目錄是準確的,即location匹配訪問的path目錄下的文件直接是在alias目錄下查找的;
????????2)root指定的目錄是location匹配訪問的path目錄的上一級目錄,這個path目錄一定要是真實存在root指定目錄下的;
????????3)使用alias標簽的目錄塊中不能使用rewrite的break(具體原因不明);另外,alias指定的目錄后面必須要加上"/"符號?。?/p>
????????4)alias虛擬目錄配置中,location匹配的path目錄如果后面不帶"/",那么訪問的url地址中這個path目錄后面加不加"/"不影響訪問,訪問時它會自動加上"/"; 但是如果location匹配的path目錄后面加上"/",那么訪問的url地址中這個path目錄必須要加上"/",訪問時它不會自動加上"/"。如果不加上"/",訪問就會失??!
????????5)root目錄配置中,location匹配的path目錄后面帶不帶"/",都不會影響訪問。
????????其他區(qū)別: 1、 alias 只能作用在location中,而root可以存在server、http和location中。 2、 alias 后面必須要用 “/” 結(jié)束,否則會找不到文件,而 root 則對 ”/” 可有可無。
實現(xiàn)訪問狀態(tài)統(tǒng)計
配置文件
vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
}
這個配置片段的作用是:
-
location /status
定義了一個 URL 路徑,當訪問該路徑時,將觸發(fā)狀態(tài)統(tǒng)計模塊。 -
stub_status on;
啟用了 Nginx 的狀態(tài)模塊,允許獲取有關(guān) Nginx 服務器狀態(tài)的信息,如活躍連接數(shù)、請求數(shù)等。此時就是打開訪問統(tǒng)計功能。 -
access_log off;
禁用了訪問日志,這意味著當訪問/status
時,不會記錄訪問日志,以保護狀態(tài)信息的隱私。 -
檢驗語法:
nginx -t
重啟服務:systemctl restart nginx.service
打開瀏覽器測試
- Active connections: 1 - 當前活躍的連接數(shù)。這包括已建立的連接,但尚未完成的請求,以及當前處理的請求。
-
server accepts handled requests - 這一行中的數(shù)字表示服務器接受、處理和已處理的請求數(shù)。
-
accepts: 1 - 表示自服務器啟動以來已接受的連接數(shù)。
-
handled: 1 - 表示自服務器啟動以來成功處理的連接數(shù)。tcp握手成功次數(shù)。
-
requests: 3 - 表示自服務器啟動以來收到的請求總數(shù)。
-
-
Reading: 0 Writing: 1 Waiting: 0 - 這些數(shù)字表示當前正在處理的連接的狀態(tài)。
-
Reading: 0 - 服務器從客戶端讀取請求的連接數(shù)。
-
Writing: 1 - 服務器向客戶端發(fā)送響應的連接數(shù)。
-
Waiting: 0 - 這是等待請求的連接數(shù),通常是在 keep-alive 連接中,等待下一個請求。
-
對主機名實現(xiàn)訪問控制?
測試其他主機對服務器連通性
配置文件
vim /usr/local/nginx/conf/nginx.conf
-
deny 192.168.41.11;
- 拒絕來自 IP 地址192.168.41.11
的訪問。這意味著如果請求來自這個 IP 地址,Nginx 將返回403 Forbidden響應。 -
allow all;
- 允許所有其他 IP 地址的訪問。 -
這個配置的效果是,允許所有 IP 地址訪問網(wǎng)站的根路徑,除了來自
192.168.41.11
的請求
配置結(jié)果測試
可以看到,訪問失敗。
域名訪問
配置文件
vim /usr/local/nginx/conf/nginx.conf
-
server_name www.test.com;
- 指定了該服務器塊所響應的域名。在這里,服務器將響應來自www.test.com
的請求。這是用于指定服務器應該響應哪個域名的設置。 -
root /var/www/html/test;
- 指定了服務器上存儲網(wǎng)站文件的根目錄。在這個例子中,根目錄被設置為/var/www/html/test
。當有請求到達時,Nginx 將會在這個目錄中查找相應的文件來提供服務。
準備測試文件
分別準備了/var/www/html/test
和 /var/www/html/benet
目錄以匹配url,以及兩個測試的index.html文件
配置DNS映射
vim /etc/hosts
????????它將兩個域名 www.test.com
和 www.benet.com
映射到 IP 地址 192.168.41.10
。這樣配置的作用是告訴操作系統(tǒng),當你在瀏覽器或其他網(wǎng)絡應用中輸入 www.test.com
或 www.benet.com
時,系統(tǒng)應該將這些域名解析到指定的 IP 地址 192.168.41.10
。
測試
????????到配置了DNS映射的主機中,打開瀏覽器,測試。
可以看到域名解析成功
IP:端口訪問
配置文件
vim /usr/local/nginx/conf/nginx.conf
????????這一行配置的效果是,Nginx 服務器將僅監(jiān)聽在 IP 地址 192.168.41.10
上的端口 80
,并等待來自客戶端的連接。這是典型的 HTTP 服務配置,客戶端可以通過在瀏覽器中輸入 http://192.168.41.10
或 http://www.example.com
(如果 DNS 配置正確)來訪問該服務器。
配置虛擬網(wǎng)卡
這個錯誤消息表明在嘗試啟動或測試 Nginx 配置時遇到了問題。讓我們逐步解釋錯誤消息:
-
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
- 這一部分告訴你 Nginx 配置文件的語法是正確的,沒有語法錯誤。這是一個正面的消息,表示 Nginx 成功驗證了配置文件的語法。 -
nginx: [emerg] bind() to 192.168.41.100:80 failed (99: Cannot assign requested address)
- 這一部分是一個緊急錯誤([emerg]
),表明 Nginx 嘗試綁定到192.168.41.100:80
失敗,原因是操作系統(tǒng)無法分配所請求的地址。可能是因為 IP 地址192.168.41.100
在系統(tǒng)網(wǎng)絡配置中不存在,或者由于權(quán)限問題無法綁定到該地址。添加虛擬網(wǎng)卡
ifconfig ens33:0 192.168.41.100/24
為
ens33
接口創(chuàng)建一個虛擬 IP 地址192.168.41.100
,允許這個 IP 地址與主要接口ens33
共存。
測試
這樣就實現(xiàn)了不同ip和端口配置訪問鏈接
身份驗證
下載httpd-tool
yum -y install httpd-tools.x86_64
添加一個測試用戶
useradd test
htpasswd -c /usr/local/nginx/passwd.db.test
#當你運行這個命令時,它會提示你輸入一個密碼,并將該密碼的散列值(哈希值)存儲在指定的密碼文件中。通常,這種做法用于配置 Nginx 或其他Web服務器以進行基本身份驗證。
將密碼文件所有者改為nginx,并只賦權(quán)讀權(quán)限(為了安全)
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
配置文件
vim /usr/local/nginx/conf/nginx.conf
-
auth_basic "secret";
- 啟用基本身份驗證,并設置驗證時顯示的提示信息為 "secret"。這意味著訪問該路徑的用戶需要提供用戶名和密碼才能訪問。 -
auth_basic_user_file /usr/local/nginx/passwd.db;
- 指定了包含用戶名和密碼散列值的文件的路徑。該文件通常是由htpasswd
命令創(chuàng)建的,用于驗證用戶提供的用戶名和密碼。 -
這個配置的效果是,對于訪問根路徑
/
的用戶,Nginx 將嘗試提供位于/var/www/html/test
目錄下的index.html
或index.htm
文件,并要求用戶提供用戶名和密碼,以便訪問。用戶名和密碼是從/usr/local/nginx/passwd.db
文件中獲取的。
測試
文章來源:http://www.zghlxwxcb.cn/news/detail-827062.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-827062.html
到了這里,關(guān)于nginx網(wǎng)站服務(下載,配置,命令,實現(xiàn)訪問狀態(tài)統(tǒng)計,訪問控制,域名 IP端口訪問,身份驗證)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!