Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解_第1页
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解_第2页
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解_第3页
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解_第4页
Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、location匹配命令      #波浪线表示执行一个正则匹配,区分大小写*    #表示执行一个正则匹配,不区分大小写    #表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录=      #进行普通字符精确匹配     #"" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_fileslocation 匹配的优先级(与location在配

2、置文件中的顺序无关)= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。 则只匹配该规则,nginx停止搜索其他匹配,否则nginx会继续处理其他location指令。最后匹配理带有""和"*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。location 优先级官方文档1. Directives with th

3、e = prefix that match the query exactly. If found, searching stops.2. All remaining directives with conventional strings, longest match first. If this match used the prefix, searching stops.3. Regular expressions, in order of definition in the configuration file.4. If #3 yielded a match, that result

4、 is used. Else the match from #2 is used.1. =前缀的指令严格匹配这个查询。如果找到,停止搜索。2. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用前缀,搜索停止。3. 正则表达式,在配置文件中定义的顺序。4. 如果第3条规则产生匹配的话,结果被使用。否则,使用第2条规则的结果。 例如location  = /   # 只匹配"/".   configuration A location  /   # 匹配任何请求,因为

5、所有请求都是以"/"开始  # 但是更长字符匹配或者正则表达式匹配会优先匹配   configuration B location /images/   # 匹配任何以 /images/ 开始的请求,并停止匹配 其它location   configuration C location * .(gif|jpg|jpeg)$   # 匹配以 gif, jpg, or jpeg结尾的请求.   # 但是所有 /images/ 目录的请求将由 Configura

6、tion C处理.      configuration D Example:?123456server   server_name ;   location = /abcd       匹配情况:    # 正好完全匹配    # 如果运行 Nginx server 的系统本身对大小写不敏感,比如 Windows ,那么也匹配    # 忽略查询串参数(query string arg

7、uments),这里就是 /abcd 后面的 ?param1?m2    # 不匹配,因为末尾存在反斜杠(trailing slash),Nginx 不认为这种情况是完全匹配    # 不匹配,因为不是完全匹配请求URI例子:· / -> 符合configuration A· /documents/document.html -> 符合configuration B· /images/1.gif -> 符合configuration C· /documents/1.jpg -&

8、gt;符合 configuration Dlocation 例子error_page 404 = fetch;location fetch(proxy_pass http:/fetch;)Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解 Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解2013-09-04 14:45:43标签:读写分离 URL重写 页面缓存 Nginx 反向代理原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。大纲一、前言二、环

9、境准备三、安装与配置Nginx四、Nginx之反向代理五、Nginx之负载均衡六、Nginx之页面缓存七、Nginx之URL重写八、Nginx之读写分离注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:一、前言       在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解、nginx作为web服务器的操作讲解、nginx作为LNMP架构的讲解,不清楚的博友可以回头看看,在这一篇博客中我们主要讲解, nginx的反向代理、负载

10、均衡、缓存、URL重写以及读写分离详解。好了,下面我们来具体说一说。二、环境准备1. 操作系统· CentOS 6.4 x86_642.软件版本· Nginx 1.4.23.实验拓扑注,实验拓扑见下文。4.安装yum源123rootnginx # rpm -ivh /pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrootweb1 # rpm -ivh /pub/epel/6/x86_64/epel-rel

11、ease-6-8.noarch.rpmrootweb2 # rpm -ivh /pub/epel/6/x86_64/epel-release-6-8.noarch.rpm5.各节点时间同步123rootnginx # ntpdate 01rootweb1 # ntpdate 01rootweb2 # ntpdate 016.关闭防火墙与SELinux123456789101112rootnginx # service iptables stoprootnginx #

12、 chkconfig iptables off rootnginx # getenforce Disabledrootweb1 # service iptables stoprootweb1 # chkconfig iptables off rootweb1 # getenforce Disabledrootweb2 # service iptables stoprootweb2 # chkconfig iptables off rootweb2 # getenforce Disabled三、安装Nginx1.解压1rootnginx

13、 src# tar xf nginx-1.4.2.tar.gz2.新建nginx用户与组1234rootnginx src# groupadd -g 108  -r nginxrootnginx src# useradd -u 108 -r -g 108 nginx rootnginx src# id nginx uid=108(nginx) gid=108(nginx) 组=108(nginx)3.准备编译配置文件12rootnginx src# yum install -y pcre-devel openssl-develrootnginx nginx-1.4

14、.2# ./configure   -prefix=/usr   -sbin-path=/usr/sbin/nginx   -conf-path=/etc/nginx/nginx.conf   -error-log-path=/var/log/nginx/error.log   -http-log-path=/var/log/nginx/access.log   -pid-path=/var/run/nginx/nginx.pid    -loc

15、k-path=/var/lock/nginx.lock   -user=nginx   -group=nginx   -with-http_ssl_module   -with-http_flv_module   -with-http_stub_status_module   -with-http_gzip_static_module   -http-client-body-temp-path=/var/tmp/nginx/client/ 

16、60; -http-proxy-temp-path=/var/tmp/nginx/proxy/   -http-fastcgi-temp-path=/var/tmp/nginx/fcgi/   -http-uwsgi-temp-path=/var/tmp/nginx/uwsgi   -http-scgi-temp-path=/var/tmp/nginx/scgi   -with-pcre4.编译并安装1rootnginx nginx-1.4.2# make && make install5.为ngi

17、nx提供SysV init脚本123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110rootnginx # cat /etc/init.d/nginx#!/bin/sh # # nginx

18、- this script starts and stops the nginx daemon # # chkconfig:   - 85 15 # description:  Nginx is an HTTP(S) server, HTTP(S) reverse  #               proxy and IMAP/POP3 proxy server # proce

19、ssname: nginx # config:      /etc/nginx/nginx.conf # config:      /etc/sysconfig/nginx # pidfile:     /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networkin

20、g configuration. . /etc/sysconfig/network # Check that networking is up.  "$NETWORKING" = "no"  && exit 0 nginx="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx

21、.conf"  -f /etc/sysconfig/nginx  && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs()     # make required directories    user=nginx -V 2>&1 | grep "configure arguments:"

22、0;| sed 's/*-user=( *).*/1/g' -    options=$nginx -V 2>&1 | grep 'configure arguments:'    for opt in $options; do        if  echo $opt | 

23、;grep '.*-temp-path' ; then            value=echo $opt | cut -d "=" -f 2            if  ! -d "$value" 

24、 then                # echo "creating" $value                mkdir -p $value && chown -R $user $value&

25、#160;           fi        fi    done  start()       -x $nginx | exit 5      -f $NGINX_CONF_FILE | exit 6&

26、#160;    make_dirs     echo -n $"Starting $prog: "     daemon $nginx -c $NGINX_CONF_FILE     retval=$?     echo      $retval -eq 0 &

27、;& touch $lockfile     return $retval  stop()      echo -n $"Stopping $prog: "     killproc $prog -QUIT     retval=$?     echo 

28、;     $retval -eq 0 && rm -f $lockfile     return $retval  restart()      configtest | return $?     stop     sleep 1 

29、0;   start  reload()      configtest | return $?     echo -n $"Reloading $prog: "     killproc $nginx -HUP     RETVAL=$?     

30、echo  force_reload()      restart  configtest()    $nginx -t -c $NGINX_CONF_FILE  rh_status()      status $prog  rh_status_q()      rh_status >/dev/null 2>&

31、;1  case "$1" in     start)         rh_status_q && exit 0         $1           

32、60;  stop)         rh_status_q | exit 0         $1              restart|configtest)      &

33、#160;  $1              reload)         rh_status_q | exit 7         $1        &#

34、160;     force-reload)         force_reload              status)         rh_status     

35、60;        condrestart|try-restart)         rh_status_q | exit 0                  *)     &

36、#160;   echo $"Usage: $0 start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest"         exit 2 esac6.为此脚本赋予执行权限1rootnginx # chmod +x /etc/init.d/nginx7.添加至服务管理列表,并让其开机自动启动1234rootnginx # c

37、hkconfig -add nginxrootnginx # chkconfig nginx on rootnginx # chkconfig nginx -list nginx              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用

38、60;   6:关闭8.启动nginx12rootnginx # service nginx start正在启动 nginx:                                      

39、;     确定9.查看一下端口12rootnginx # netstat -ntlp | grep :80tcp        0      0 :80                  :*    

40、               LISTEN      3889/nginx10.测试一下好了,Nginx安装与配置就到这里,下面我们来说一说Nginx的反向代理。四、Nginx之反向代理在配置nginx反向代理之间我们得先准备两台测试服务器,Web1与Web2。1.安装httpd12rootweb1 # yum install -y httpdrootweb2 # yum install -y httpd2

41、.提供测试页面12rootweb1 # echo "<h1></h1>" > /var/www/html/index.htmlrootweb2 # echo "<h1></h1>" > /var/www/html/index.html3.启动httpd服务1234rootweb1 # service httpd start正在启动 httpd:             

42、;                              确定rootweb2 # service httpd start正在启动 httpd:             

43、60;                             确定4.测试一下5.简单说一下,正向代理与反向代理(1).正向代理的概念       正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个

44、代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。       结论就是,正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。(2).

45、反向代理的概念继续举例:           例用户访问        结论就是,反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。(3).两者区别从用途上来讲:       正向代理的典型用途是为在防火墙内的局域网客户端提供访问

46、Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。从安全性来讲:       正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。6.nginx 代

47、理模块http 代理官方中文文档:/nginx:nginx%E6%A8%A1%E5%9D%97%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C%E4%B8%AD%E6%96%87%E7%89%88:standardhttpmodules:httpproxy说明:代理模块的指令有很多我这里只讲解重要的proxy_pass,想了解更多代理指令请参考官方中文文档。这个模块可以转发请求到其他的服务器。HTTP/1.0无法使用keepalive(后端服务器将为每个请求创建并且删除连接)。nginx为浏览器发送HTTP/1.1并为后端服务器

48、发送HTTP/1.0,这样浏览器就可以为浏览器处理keepalive。     如下例:1234location /   proxy_pass        http:/localhost:8000;  proxy_set_header  X-Real-IP  $remote_addr;注意,当使用http proxy模块(甚至FastCGI),所有的连接请求在发送到后端服务器之前nginx将缓存它们,因此,在测量从后端传送的数据时,它

49、的进度显示可能不正确。实验拓扑:7.配置http反向代理123456rootnginx # cd /etc/nginx/rootnginx nginx# cp nginx.conf nginx.conf.bak #备份一个原配置文件rootnginx nginx# vim nginx.conflocation /                proxy_pass      http:/192.1

50、68.18.201;       指令说明:proxy_pass语法:proxy_pass URL默认值:no       使用字段:location, location中的if字段       这个指令设置被代理服务器的地址和被映射的URI,地址可以使用主机名或IP加端口号的形式,例如:proxy_pass http:/localhost:8000/uri/;8.重新加载一下配置文件1234rootnginx # servi

51、ce nginx reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                   

52、                        确定9.测试一下注,大家可以看到,当我们访问08时,被代理重新定向到Web1上。10.查看一下Web服务器日志1234567891011rootweb1 # tail /var/log/httpd/access_log08 - - 04/Sep/2013:00:14:20

53、+0800 "GET /favicon.ico HTTP/1.0" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:14:20 +0800 "GET / HTTP/1.0" 200 23 

54、;"-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:14:20 +0800 "GET /favicon.ico HTTP/1.0" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1;

55、 WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"38 - - 04/Sep/2013:00:14:45 +0800 "GET / HTTP/1.1" 200 23 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95

56、 Safari/537.36"38 - - 04/Sep/2013:00:14:48 +0800 "GET /favicon.ico HTTP/1.1" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:

57、14:55 +0800 "GET /favicon.ico HTTP/1.0" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:15:05 +0800 "GET /favicon.ico HTTP/1.0"

58、 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:15:13 +0800 "GET /favicon.ico HTTP/1.0" 404 289 "-" "Mozilla/5.

59、0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:15:16 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) C

60、hrome/28.0.1500.95 Safari/537.36"08 - - 04/Sep/2013:00:15:16 +0800 "GET /favicon.ico HTTP/1.0" 404 289 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"注,大家可以看到我们这里的客户的

61、IP全是,nginx代理服务器的IP,并不是真实客户端的IP。下面我们修改一下,让日志的IP显示真实的客户端的IP。11.修改nginx配置文件1234location /         proxy_pass      01;        proxy_set_header  X-Real-IP  $remote_addr;

62、60;#加上这一行指令说明:proxy_set_header语法:proxy_set_header header value 默认值: Host and Connection 使用字段:http, server, location 这个指令允许将发送到被代理服务器的请求头重新定义或者增加一些字段。这个值可以是一个文本,变量或者它们的组合。proxy_set_header在指定的字段中没有定义时会从它的上级字段继承。12.重新加载一下配置文件1234rootnginx # service nginx reloadnginx: the configuration

63、60;file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful重新载入 nginx:                          

64、                 确定13.测试并查看日志1234567891011rootweb1 # tail /var/log/httpd/access_log08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (comp

65、atible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +08

66、00 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; M

67、SIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 &

68、quot;GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0;

69、 Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET

70、/ HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"08 - - 03/Sep/2013:16:26:18 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows

71、NT 6.1; WOW64; Trident/6.0)"注,大家可以看到日志记录的还是代理的IP,没有显示真实客户端的IP,为什么呢?我们来看一下httpd的配置文件。14.查看并修改httpd配置文件rootweb1 # vim /etc/httpd/conf/httpd.conf注,大家可以这里记录日志的参数还是%h,下面我们修改一下参数。注,这是修改后的参数,将h%修改为%X-Real-IPi,好的下面我们再来测试一下。15.重启并测试1234567891011121314rootweb1 # service httpd restart停止 httpd:  

72、                                             确定正在启动 httpd:   

73、0;                                       确定rootweb1 # tail /var/log/httpd/access_log38 - - 03/Sep/

74、2013:17:09:14 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:14 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5

75、.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:0

76、9:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compa

77、tible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +080

78、0 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MS

79、IE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"38 - - 03/Sep/2013:17:09:15 +0800 "GET / HTTP/1.0" 200 23 "-" "Mozilla/5.0 (compatible; MSIE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论