它是由俄罗斯人伊戈尔·赛索耶夫为俄罗斯访问量第二的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;

配置图片防盗链
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;
本文来源:国外服务器--nginx搭建http文件服务器
本文地址:https://www.idcbaba.com/guowai/3221.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 1919100645@qq.com 举报,一经查实,本站将立刻删除。



