nginx搭建http文件服务器

nginx搭建http文件服务器

浏览次数:
信息来源: 用户投稿
更新日期: 2025-12-26
文章简介

它是由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,并于2004年首次公开发布的。web服务器:负责处理和响应用户请求,一般也称为http服务器,如A

2025阿里云双十一服务器活动

  • 它是由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,并于2004年首次公开发布的。

  • web服务器:负责处理和响应用户请求,一般也称为http服务器,如Apache、IIS、Nginx

    应用服务器:存放和运行系统程序的服务器,负责处理程序中的业务逻辑,如Tomcat、Weblogic、Jboss(现在大多数应用服务器也包含了web服务器的功能)

    Nginx是什么,总结一下就是这些:

    设计思想是事件驱动的异步非阻塞处理(类node.js)

    占用内存少、启动速度快、并发能力强

    扩展性好,第三方插件非常多

    Nginx是全球排名前三的服务WHY器,并且近年来用户增长非常快。

    有人统计,世界上约有三分之一的网址采用了Nginx。Nginx是许多大型网站的常见架构组成部分,包括百度、阿里、腾讯、京东、网易、新浪和大疆。

    Nginx安装简单,配置简洁,作用却无可替代。

    首先要使用CMD跳转到NGINX安装目录下

    startnginx

    停止Nginx:

    nginx-sstop/nginx-squit

    热重启Nginx:

    nginx-sreload

    强制停止Nginx:

    pkill-9nginx

    修改配置

    server_name(你的主机IP)localhost;#你的服务器名称(访问名称)

    rootF:\Nginx_text;#你需要在NGINX服务器上放置的文件目录

    autoindexon;#开启目录浏览

    autoindex_localtimeon;#以服务器的文件时间作为显示的时间

    autoindex_exact_sizeoff;#切换为off后,以可读的方式显示文件大小,单位为KB、MB或者GB

    charsetutf-8,gbk;#展示中文文件名

    #这一段是为了美化界面,需要先下载插件然后添加以下这行配置,不嫌丑的话直接注释即可

    #add_after_body/.autoindex/footer.html;

    默认遇到.mp4以及.pdf格式会在浏览器中打开,可设置为点击直接下载。

    #添加这一段,点击任何文件都是下载。

    add_headerContent-Disposition"attachment;filename=$1";

    }

    上面代码块的意思是:当一个请求叫做localhost:8099请求nginx服务器时,该请求就会被匹配进该代码块的server{}中执行。

    当然nginx的配置非常多,用的时候可以根据文档进行配置。

    配置完成之后热重启一下就可以使用你的主机IP+:+端口号访问NGINX服务器了

    一些经典的操作

    root/usr/local/var/www/my-project;#设置为个人项目的根目录路径

    indexindex.htmlindex.htm;

    当你的项目没有灰度环境,又想在功能上线后先让测试同事试用一下的时候,就需要设置访问的白名单了。

    如果你的项目用上了nginx做代理,你就会发现这就是小菜一碟。

    #IP访问限制(只允许IP是10.81.1.11的机器才能访问)

    indexindex.htmlindex.htm;

    nginx搭建http文件服务器

    配置图片防盗链

    root/usr/local/var/www/my-project;#设置为个人项目的根目录路径

    indexindex.htmlindex.htm;

    location~*\.(gif|jpg|jpeg|png|bmp|swf)${

    valid_referersnoneblocked192.168.0.103;#只允许本机IP外链引用

    }

    上面代码块设置了只允许本机IP外链引用图片资源,其他域名下的请求都会被403禁止访问。

    proxy_passhttp://www.proxy.com;#要实现跨域的域名

    add_headerAccess-Control-Allow-Origin*;

    add_headerAccess-Control-Allow-Methods'GET,POST,OPTIONS';

    add_headerAccess-Control-Allow-Headers'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    }

    思路就是在反向代理请求过程中,增加可以跨域访问的请求头。

    如上图所示,动静分离其实就是Nginx服务器将接收到的请求分为动态请求静态请求

    静态请求直接从nginx服务器所设定的根目录路径去取对应的资源,动态请求转发给真实的后台(前面所说的应用服务器,如图中的Tomcat)去处理。

    这样做不仅能给应用服务器减轻压力,将后台api接口服务化,还能将前后端代码分开并行开发和部署。

    indexindex.htmlindex.htm;

    #静态化配置,所有静态请求都转发给nginx处理,存放目录为my-project

    location~.*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)${

    root/usr/local/var/www/my-project;#静态请求所代理到的根目录

    #动态请求匹配到path为'node'的就转发到8002端口处理

    proxy_passhttp://localhost:8002;#充当服务代理

    }

    访问静态资源nginx服务器会返回my-project里面的文件,如获取index.html:

    访问动态请求nginx服务器会将它从8002端口请求到的内容,原封不动的返回回去:

    反向代理其实就类似你去找代购帮你买东西(浏览器或其他终端向nginx请求),你不用管他去哪里买,只要他帮你买到你想要的东西就行(浏览器或其他终端最终拿到了他想要的内容,但是具体从哪儿拿到的这个过程它并不知道)。

  • 保障应用服务器的安全(增加一层代理,可以屏蔽危险攻击,更方便的控制权限)

  • 实现负载均衡(稍等~下面会讲)

  • 实现跨域(号称是最简单的跨域方式)

  • 配置一个简单的反向代理是很容易的,代码如下

    indexindex.htmlindex.htm;

    proxy_passhttp://localhost:8000;#反向代理配置,请求会被转发到8000端口

    }

    反向代理的表现很简单。那上面的代码块来说,其实就是向nginx请求跟请求是一样的效果。(跟代购的原理一样)

    这是一个反向代理最简单的模型,只是为了说明反向代理的配置。但是现实中反向代理多数是用在负载均衡中。

    nginx就是充当图中的proxy。在请求时,左侧的三个客户端通过向NGINX获取内容,无法感知到三台服务器的存在。

    此时,proxy就充当了3个server的反向代理。

    CDN服务是反向代理的典型应用之一,表明了反向代理在各个领域都有广泛的应用。反向代理是许多大公司架构中应用的负载均衡基础,除此之外还有其他实现方式。

    随着业务的不断增长和用户的不断增多,一台服务已经满足不了系统要求了。这个时候就出现了服务器集群。

    在服务器集群中,Nginx可以将接收到的客户端请求“均匀地”(严格讲并不一定均匀,可以通过设置权重)分配到这个集群中所有的服务器上。这个就叫做负载均衡

  • 前面也提到了,负载均衡可以解决分摊服务器集群压力的问题。除此之外,Nginx还带有健康检查(服务器心跳检查)功能,会定期轮询向集群里的所有服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态。

    一旦发现某台服务器异常,那么在这以后代理进来的客户端请求都不会被发送到该服务器上(直健康检查发现该服务器已恢复正常),从而保证客户端访问的稳定性。

    配置一个简单的负载均衡并不复杂,代码如下:

    #indexindex.htmlindex.htm;

    proxy_passhttp://domain;#负载均衡配置,请求会被平均分配到8000和8001端口

    proxy_set_headerHost$host:$server_port;

    标签:
    提高电子商务商店转化率的9种方法(电商如何提高转化率的方法)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!