Nginx是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。它具有占用内存少、启动快、高并发能力强等优势,在互联网项目中被广泛应用。本文主要介绍下Nginx正向代理和反向代理的区别有哪些。
正向代理是一个位于客户端和原始服务器(origin server)之前的服务器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定目标,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器。
Nginx反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理发送普通请求,接着反向代理将判断向何处(后端节点)转交请求,并将获得的内容返回给客户端。
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式成为反向代理服务。
从上面内容可以看出,Nginx正向代理和反向代理最关键的两点区别为是否指定目标服务器和客户端是否要做设置。
此外,Nginx正向代理和反向代理在用途上也有明显的区别。正向代理用途是为了在防火墙内的局域网提供访问Internet的途径,还可以使用缓冲特性减少网络使用率。反向代理的用途是将防火墙后面的服务器提供给Internet用户访问,同时还可以完成诸如负载均衡等功能。
Nginx还可以作为静态Web服务器来部署静态资源。这里所说的静态资源是指在服务端真实存在,并且能够直接展示的一些文件,比如常见的html页面、css文件、js文件、图片、视频等资源。
相对于Tomcat,Nginx处理静态资源的能力更加高效,所以在生产环境下,一般都会将静态资源部署到Nginx中。
将静态资源部署到Nginx非常简单,只需要将文件复制到Nginx安装目录下的html目录中即可。
server {
listen 80; #监听端口
server_name localhost; #服务器名称
location / { #匹配客户端请求url
root html; #指定静态资源根目录
index index.html; #指定默认首页
}
}