精华内容
下载资源
问答
  • 服务器动态资源请求

    千次阅读 2017-10-24 12:20:45
    1. 浏览器请求动态页面过程 2. WSGI 怎么在你刚建立的Web服务器上运行一个Django应用和Flask应用,如何不做任何改变而适应不同的web架构呢? 在以前,选择 Python web 架构会受制于可用的web服务器,反之...

    1. 浏览器请求动态页面过程

    2. WSGI

    怎么在你刚建立的Web服务器上运行一个Django应用Flask应用,如何不做任何改变而适应不同的web架构呢?

    在以前,选择 Python web 架构会受制于可用的web服务器,反之亦然。如果架构和服务器可以协同工作,那就好了:

    但有可能面对(或者曾有过)下面的问题,当要把一个服务器和一个架构结合起来时,却发现他们不是被设计成协同工作的:


    那么,怎么可以不修改服务器和架构代码而确保可以在多个架构下运行web服务器呢?答案就是 Python Web Server Gateway Interface (或简称 WSGI,读作“wizgy”)。

    WSGI允许开发者将选择web框架和web服务器分开。可以混合匹配web服务器和web框架,选择一个适合的配对。比如,可以在Gunicorn 或者 Nginx/uWSGI 或者 Waitress上运行 Django, Flask, 或 Pyramid。真正的混合匹配,得益于WSGI同时支持服务器和架构:

    web服务器必须具备WSGI接口,所有的现代Python Web框架都已具备WSGI接口,它让你不对代码作修改就能使服务器和特点的web框架协同工作。

    WSGI由web服务器支持,而web框架允许你选择适合自己的配对,但它同样对于服务器和框架开发者提供便利使他们可以专注于自己偏爱的领域和专长而不至于相互牵制。其他语言也有类似接口:java有Servlet API,Ruby 有 Rack。

    3.定义WSGI接口

    WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello World!”:

    def application(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return 'Hello World!'

    上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

    • environ:一个包含所有HTTP请求信息的dict对象;
    • start_response:一个发送HTTP响应的函数。

    整个application()函数本身没有涉及到任何解析HTTP的部分,也就是说,把底层web服务器解析部分和应用程序逻辑部分进行了分离,这样开发者就可以专心做一个领域了

    不过,等等,这个application()函数怎么调用?如果我们自己调用,两个参数environ和start_response我们没法提供,返回的str也没法发给浏览器。

    所以application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器。而我们此时的web服务器项目的目的就是做一个极可能解析静态网页还可以解析动态网页的服务器



    展开全文
  • 应用服务器:一般指像tomcat、jetty、resin这类的服务器,可以解析动态资源,也可以解析静态资源,但解析静态资源的能力没有web服务器好。(关于静态资源和动态资源,在本文的最后有说明) 一般都是只有web服务器...

    前言

    在互联网架构中服务器分为Web服务器和应用服务器。

    Web服务器:一般指像nginx、apache这类的服务器,web服务器一般只能解析静态资源;
    应用服务器:一般指像tomcat、jetty、resin这类的服务器,可以解析动态资源,也可以解析静态资源,但解析静态资源的能力没有web服务器好。(关于静态资源和动态资源,在本文的最后有说明)

    • 一般都是只有web服务器才能被外网访问,应用服务器只能内网访问。
    • gulp-webserver、http-server、nginx都可以用来搭建web服务器。
    • json-server可以用来搭建应用服务器。

    什么是Nginx

    Nginx是一个高性能的HTTP和反向代理(正向、反向代理,在文章最后有说明)服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。是目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用 。

    Nginx的优点

    1. 跨平台、配置简单,在不同的操作系统上都可以安装nginx;
    2. 非阻塞、高并发连接,能处理2-3万并发连接数,官方监测能支持5万并发;
    3. 内存消耗小,开启10个nginx才占150M内存,成本低廉:开源;
    4. 稳定性高:宕机的概率非常小;
    5. 节省宽带:支持GZIP压缩,例如一个100k的文件,只需要传输30k。可以添加浏览器本地缓存;
    6. 分部式部署(健康检查功能),例如部署一个应用,可能会部署到两台服务器上,如果有一个服务器宕机,会重新将请求提交到其他的节点上;
    7. 接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力;
    8. 负载均衡,例如同样的应用会部署多份,所有的请求都发给nginx,nginx再转发给不同的应用服务器;
    9. 事件驱动:通信机制采用epoll模型,是异步非阻塞事件处理机制,相当于提供了一个队列,排队解决;
    10. master/worker结构:一个master进程,生成一个或者多个worker进程;
    11. nginx的事件驱动和master/worker结构,实现了它的高并发;

    Nginx的使用

    1、安装

    windows系统,点击下载 nginx 1.10.2稳定版,下载完解压,不需要安装,双击exe文件即启动nginx服务。

    Mac 系统中,打开终端,输入以下命令,使用 brew 安装 nginx

    brew install nginx
    

    安装成功后,如下图所示,可以看到nginx的默认安装路径,默认安装路径为:/usr/local/etc/nginx/。
    nginx
    可以输入nginx -v 查看版本

    2、进入安装目录

    打开Finder,快捷键 shift+command+g,粘贴 nginx的默认路径,进入到nginx的安装目录下,如下图:
    nginx
    打开nginx.conf这个文件,能看到默认的端口号是8080,默认的域是localhost。
    接下来我们要将自己的项目添加到这个文件中。
    nginx
    在修改之前先启动一下nginx服务,终端中输入 nginx 回车,启动服务。
    如果敲回车后,终端没有输出信息,则说明服务启动成功,打开浏览器,访问http://localhost:8080/,出现下面这个页面,则说明服务启动成功。
    nginx

    3、添加本地项目的配置信息

    现在我们来添加自己项目的配置信息。为了不破坏原有的配置文件,最好是新建一个自己项目的配置文件,如下图,我新建一个conf.d的文件夹,在里面新建了website.conf配置文件。
    nginx
    打开website.conf文件,写入以下内容,.conf文件的编写规则:中间用空格,最后用分号,注释用#号,并且注释要新起一行。

    Mac下,打开Finder,同时按下 command+option+c,可以将文件路径复制到粘贴板中。

    .conf 文件内容说明:

    • listen,服务器的端口号;
    • server_name,服务器域名,或者ip,多个域名的话用空格隔开;
    • root,项目的绝对路径;
    • index,设置打开的默认页面,默认为index.html;
    • location,配置代理,可以进行跨域访问数据,后面跟的是要转发的请求;
      • rewrite,路径重写,"[原路径] [新路径] break;"
      • proxy_pass,访问的目标地址;
    server{
        listen 8808;
        server_name localhost;
        root /Users/zql/GP18/m_website/dist;
        index index.html;
        location /home {
            rewrite /home/(.*) /$1 break;
            proxy_pass http://127.0.0.1:3000;
        }
    }
    

    4、将项目的配置文件写入nginx.conf中

    然后将自己项目的配置文件引入nginx的配置文件中,打开nginx.conf文件,在文件中写入:

    include /usr/local/etc/nginx/conf.d/*.conf;
    

    如下图:
    nginx

    5、重启服务

    修改完之后,在终端中输入以下命令,重启nginx服务。

    nginx -s reload
    

    会弹出一个提示框,点击允许。
    nginx

    6、访问项目

    在浏览器中输入上面配置的地址,http://127.0.0.1:8808/,就可以访问自己的项目了。

    nginx命令:

    • nginx,启动服务;
    • nginx -s reload,重启服务
    • nginx -s stop,停止服务

    补充

    反向代理和反向代理

    正向代理:一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。正向代理代理端代理的是客户端。
    正向代理

    反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求,发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理代理端代理的是服务端。
    反向代理

    动态资源和静态资源分离

    动态资源、静态资源分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。动态资源、静态资源分离简单的概括是:动态文件与静态文件的分离。

    软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件)。这些不需要经过后台处理的文件称为静态文件,反之则称为动态文件。因此后台处理要忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗,当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。

    动、静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问,我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。

    动静分离的优点

    • 有益于性能优化,静态资源放在cdn,动态资源放在另外一台服务器;
    • 前后端分离,各自开发,效率更高;
    • 提高用户访问静态代码的速度,降低对后台应用访问;
    展开全文
  • 1、 Web资源介绍 ... l JSP/Servlet:动态资源,需要先转换成html,再给浏览器看。...2、静态资源和动态资源区别 3、Web服务器 Web服务器的作用是接收客户端的请求,给客户端作出响应。 对于JavaWe

    1、 Web资源介绍

    l  html:静态资源 ,浏览器可以看得懂,它可以有变量;

    l  JSP/Servlet:动态资源,需要先转换成html,再给浏览器看。

    当然,除了JavaWeb程序,还有其他Web程序,例如:ASP、PHP等。



    2、静态资源和动态资源区别


    3、Web服务器

    Web服务器的作用是接收客户端的请求,给客户端作出响应。

    对于JavaWeb程序而已,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转换成静态资源,当然JSP/Servlet容器不只这些功能,我们会在后面一点一点学习。

    我们需要使用的是Web服务器和JSP/Servlet容器,通常这两者会集于一身。下面是对JavaWeb服务器:

    l  Tomcat(Apache):当前应用最广的JavaWeb服务器(注意只支持一部分JavaEE的规范);

    l  JBoss(Redhat红帽):支持JavaEE,应用比较广;EJB容器

    l  GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;

    l  Resin(Caucho):支持JavaEE,应用越来越广;

    l  Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;

    l  Websphere(IBM):要钱的!支持JavaEE,适合大型项目

    展开全文
  • Nginx实现静态资源服务器

    万次阅读 多人点赞 2017-05-31 21:33:16
    我们在上一篇文章中已经分析了实现静态资源服务器的多种思路。本篇文章记录 使用Nginx实现静态资源服务器的步骤。首先需要安装Nginx和了解Nginx的配置文件。CentOS系统可参考如下帖子:Nginx-------Nginx的安装和多...



    我们在上一篇文章中已经分析了实现静态资源服务器的多种思路。


    本篇文章记录 使用Nginx实现静态资源服务器的步骤。


    首先需要安装Nginx和了解Nginx的配置文件。

    CentOS系统可参考如下帖子:


    Nginx-------Nginx的安装和多域名配置


    Nginx安装好能正常运行后我们来尝试配置静态资源服务器。



    配置静态资源服务器


    首先使用命令确认Nginx配置所在位置,使用命令如下:

    sudo nginx -t

    显示如图:


    则我的配置文件在/etc/nginx目录中。



    我们在域名配置文章中已经有配置如下:

    server
    {
        listen 80;
        server_name my.525.life;
        location / {
            #....
            proxy_pass http://localhost:8880;
        }
        ##### other directive
    }

    其实就是将Nginx的所有请求都转发给 
    http://localhost:8880

    配置静态资源服务器的话,就是把一部分请求分离出来,让这些请求直接访问到服务器的磁盘目录中。


    例如配置如下:

    指定路径对应的目录。location可以使用正则表达式匹配。并指定对应的硬盘中的目录。如下:

    location /image/ {
                root   /usr/local/static/;
                autoindex on;
            }

    这个配置表示输入 localhost:80/image/ 或者my.525.life/image/ 时会访问本机的/usr/local/static/image/ 目录。

    如果没有/usr/local/static/image/ 目录则需要新建 /usr/local/static/image/ 目录,在/usr/local/static/image/ 中我们放一张图片1.jpg上去,重启nginx服务,就可以通过 localhost:80/image/1.jpg访问了。

    创建目录
    mkdir /usr/local/static/image
    #放一张照片上去#
    cd  /usr/local/static/image
    ls
    1.jpg

    重启 nginx
    sudo nginx -s reload


    打开浏览器 输入 server_name/image/1.jpg 就可以访问该静态图片了


    更多配置参数和匹配规则

    语法规则: location [=|~|~*|^~] /uri/ { … }

    = 开头表示精确匹配
    ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

    ~ 开头表示区分大小写的正则匹配
    ~*  开头表示不区分大小写的正则匹配
    !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
    / 通用匹配,任何请求都会匹配到。
    多个location配置的情况下匹配顺序为:

    首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

    例子,有如下匹配规则:

    location = / {
       #规则A
    }
    location = /login {
       #规则B
    }
    location ^~ /static/ {
       #规则C
    }
    location ~ \.(gif|jpg|png|js|css)$ {
       #规则D
    }
    location ~* \.png$ {
       #规则E
    }
    location !~ \.xhtml$ {
       #规则F
    }
    location !~* \.xhtml$ {
       #规则G
    }
    location / {
       #规则H
    }

    那么产生的效果如下:

    访问根目录/, 比如http://localhost/ 将匹配规则A

    访问 http://localhost/login 将匹配规则B,http://localhost/register 则匹配规则H

    访问 http://localhost/static/a.html 将匹配规则C

    访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 http://localhost/static/c.png 则优先匹配到规则C

    访问 http://localhost/a.PNG 则匹配规则E,而不会匹配规则D,因为规则E不区分大小写。

    访问 http://localhost/a.xhtml 不会匹配规则F和规则G,http://localhost/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。

    访问 http://localhost/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。

    所以实际使用中,个人觉得至少有两个匹配规则定义,如下:

    # 第一个必选规则,处理动态请求转发到tomcat

    location = / {
        proxy_pass http://localhost:8080
    }
    # 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
    # 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
    location ^~ /static/ {
        root /webroot/static/;
    }
    location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root /webroot/res/;
    }
    

    三、ReWrite语法


    last – 基本上都用这个Flag。


    break – 中止Rewirte,不在继续匹配


    redirect – 返回临时重定向的HTTP状态302


    permanent – 返回永久重定向的HTTP状态301


    1、下面是可以用来判断的表达式:


    -f和!-f用来判断是否存在文件


    -d和!-d用来判断是否存在目录


    -e和!-e用来判断是否存在文件或目录


    -x和!-x用来判断文件是否可执行


    2、下面是可以用作判断的全局变量


    例:http://localhost:88/test1/test2/test.php


    $host:localhost


    $server_port:88


    $request_uri:http://localhost:88/test1/test2/test.php


    $document_uri:/test1/test2/test.php


    $document_root:D:\nginx/html


    $request_filename:D:\nginx/html/test1/test2/test.php


    四、Redirect语法

    server {
        listen 80;
        server_name my.525.life;
        index index.html index.php;
        root html;
        if ($http_host !~ “^my\.525\.life$" {
            rewrite ^(.*) http://my.525.life$1 redirect;
        }
    }


    五、防盗链

    location ~* \.(gif|jpg|swf)$ {
        valid_referers none blocked my.525.life yuemei.525.life;
        if ($invalid_referer) {
            rewrite ^/ http://$host/logo.png;
        }
    }

    六、根据文件类型设置过期时间

    location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
        if (-f $request_filename) {
            expires 1h;
            break;
        }
    }


    七、禁止访问某个目录

    location ~* \.(txt|doc)${
        root /data/www/wwwroot/linuxtone/test;
        deny all;
    }


    一些可用的全局变量:
    $args
    $content_length
    $content_type
    $document_root
    $document_uri
    $host
    $http_user_agent
    $http_cookie
    $limit_rate
    $request_body_file
    $request_method
    $remote_addr
    $remote_port
    $remote_user
    $request_filename
    $request_uri
    $query_string
    $scheme
    $server_protocol
    $server_addr
    $server_name
    $server_port
    $uri












    展开全文
  • 项目描述 vue项目使用8090端口(提供页面),java项目使用...#java项目服务器使用8080端口 upstream server_java { server 127.0.0.1:8080; } #vue项目服务器使用8090端口 upstream server_vue { server 127.0.0...
  • nginx实现静态资源服务器

    千次阅读 热门讨论 2017-12-02 16:02:20
    什么是静态资源  提到静态资源,我们当然要和...动态资源是指在程序运行过程中去访问资源,也可以这样说,不同的用户得到不同的回答就是动态资源。  当客户端请求的页面是静态网页时,服务器会直接把静态网页的内容相
  • 动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。 2.静态资源和动态资源的区别 a.静态资源一般都是...
  • Nginx配置静态资源服务器

    千次阅读 2019-07-26 10:09:29
    nginx的一个常用用途是将其设置为代理服务器,这意味着服务器接受请求,将它们传递给代理服务器,代理服务器去对应的服务器中检索响应并将他们发送给客户端。 步骤: 配置一个基本的代理服务器,该服务器域名wap....
  • 项目中经常会用到的图片域名配置访问指定图片,一般情况下我们把图片上传到服务器的指定image目录下,有两种方法能够访问到图片,一种是nginx配置静态资源访问,一种是依赖于tomcat容器进行初始化访问。 下面我们先...
  • 一,利用Nginx做动静态资源分离,处理静态资源和动态资源目的是利用nginx不仅作为静态资源服务器,例如 html 页面,js,css,图片等,同时还利用nginx把动态资源请求转发到集群中的各个web服务器(如Tomcat)处理, ...
  • nginx--静态资源服务器配置

    千次阅读 2018-07-03 21:28:36
    Nginx作为常用的中间件,它主要运用在静态资源web服务器,代理服务,负载均衡调度器SLB及动态缓存上。 Nginx作为http静态资源的server,它可以接收客户端类似于jpeg、htm、flv这种静态资源的请求,然后直接通过静态...
  • OAuth2 就不多介绍了,本试验主要演示注册码模式,分为授权服务器和资源服务器俩个应用,后续会持续扩展为单个授权服务器和多个资源服务器。试验步骤按照以下截图创建授权服务器,授权服务器包结构如下1 使用pom文件...
  • 何为静态资源,何为动态资源

    千次阅读 2019-03-20 11:06:31
    动态资源:一般客户端请求的动态资源,先将请求交于web容器,web容器连接数据库,数据库处理数据之后,将内容交给web服务器,web服务器返回给客户端解析渲染处理。 2.静态资源和动态资源的区别 a.静态资源一般都是...
  • 今天搭建了一个SpringCloudOAuth2的AuthServer,主要在SpringSecurity的架构上加上验证服务器(@EnableAuthorizationServer)和资源服务器(@EnableResourceServer)。 各种配置网上都有,唯一需要注意的是@...
  • 1、nginx部署静态资源服务器 (1)在nginx的根目录下,点击conf文件夹,编辑nginx.conf配置文件; (2)增加sever配置,我这里因为还要配置前端服务器,所以就新建一个server,并配置对应的端口 server { listen ...
  • web中什么是静态资源和动态资源

    千次阅读 2020-08-05 17:28:12
    静态资源和动态资源的概念: 静态资源:我的理解是前端的固定页面,这里面包含HTML、CSS、JS、图片等等,不需要查数据库也不需要程序处理,直接就能够显示的页面。 具体形式为:客户端发送请求到web服务器,web...
  • 一、静态web页面 1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个...之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,...
  • 服务器资源池化技术,除了能够带来灵活、弹性的资源部署,提高资源利用率这个优势,还能够更有效的提高服务器的故障修复能力,提升服务器运营效率。 Intel提出了RSA(Rack Scale Architecture)架构、Google携手...
  • hp loadrunner的监控已经做的很好了,可以监控多种资源,譬如: 1.unix(linux)服务器资源(需要...3.apache资源(需要动态加载一个apache的库对监控作为支持) 4.welogic资源(需要在服务器端安装jdk 修改xml权限配置==)
  • java中静态资源和动态资源的区别

    万次阅读 2017-08-23 14:55:45
    动态资源:jsp/servlet属于服务器端 一、静态web页面: 1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器...
  • 【转载】web中静态资源和动态资源

    千次阅读 2018-05-05 23:10:27
    原文http://blog.csdn.net/mooreliu/article/details/45563227静态网站特点: 1. 静态网站是最初的建站方式,浏览者所看到的每...网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保...
  • 服务器上使用百度网盘下载资源

    千次阅读 2018-08-04 14:39:40
    雁引愁心去,山衔好月来。...大家应该都知道wget,通过wget可以在服务器上很方便的下载网络资源,那好,我的资源去网络上下好了,对,如果所有资源都可以去网上找到的话,确实很方便,但是如果我们在部署服务器,...
  • 机缘巧合, 有幸在科大校园听了京东集团副总裁、京东商城总架构师刘海峰校友作的关于大...对于如何解决硬件服务器资源的不足的问题上, 让我印象深刻和触发我思考应该就是三个关键字:超卖、混搭和智能。超卖,混搭。
  • 资源服务器用自己的 ResourceTokenServices 解析令牌.
  • 其实可以通过Apache的代理功能来实现静态资源和动态资源的分离。 假设我的web项目中有3个文件夹,分别用来存放不同的静态资源,如: 1) dojo_lib: 存放所有dojo文件(这个比较大) 2) css: 存放项目应用的css样式 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 462,987
精华内容 185,194
关键字:

动态资源服务器