Nginx是一个高性能的http和反向代理web服务器,当然也可以作为邮件代理服务器。本文主要扫盲http服务器与反向代理。
反向代理是相对代理而言的,比如翻墙上网,对于客户端来说,翻墙软件就是正向代理服务器,它代理我们的请求,然后去目标服务器获取资源,再返回给我们;反向代理是站在服务器的角度,客户端访问nginx时,nginx会将请求分发到后端真实服务器上,客户端认为nginx就是真实服务器,这时nginx就起到一个反向代理的作用。代理、反向代理只是站的角度不一样,一个叫法而已。
许多公司使用F5硬件级负载均衡,相比nginx软负载更强劲,当然更好的东西是收费的,如今nginx已被F5收购。
打开nginx官网http://nginx.org/,先下载一个nginx,这里为了快速扫盲,使用windows版,下载后直接解压即可。
在cmd下进入nginx目录,使用命令后台启动nginx:
start /b nginx.exe
直接在浏览器访问http://localhost,看到nginx页面就成功了。nginx主要的功能需要在/conf/nginx.conf配置文件里配置,配置文件有特定的指令,单条简单指令以分号结尾,块指令以花括号包裹,块指令里包含单条指令。
server { location / { root test/html; } location /images/ { root test; }}
在server里配置两个location,location用以匹配收到请求的url,有多个可以匹配的路径时,nginx会选择最长匹配路径。在nginx目录下创建test/html、test/images文件夹,分别加入一些html文件,一些图片文件,重新加载nginx。nginx重新加载时,会继续处理完原有的请求,然后杀掉工作进程,主进程重新加载配置文件,新的请求将使用新的工作进程使用新的配置文件,实现平滑过度。
start /b nginx.exe -s reload
当访问路径http://localhost/*.html时会匹配到/,文件会从test/html下获取资源,同理访问http://localhost/images/*时会匹配到/images/。上述图片location还可以使用正则表达式,只匹配特定的文件后缀:
#正则表达式以~开头location ~ \.(gif|jpg|png)$ { root /data/images;}
上面基本就是nginx作为服务器的使用,很多公司使用nginx作为静态文件的伺服器,就是类似上述方式。下面搞一个简单的代理server:
server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8080; } location ~\.(jpg|png|gif)$ { root test/images; }} server { listen 8080; server_name localhost; root test/upstream; location / { } }
配置两个server,80端口收到的非图片资源请求时,全部转发到8080端口获取资源。第二个server,将root配置到了server的全局范围下,当location下找不到对应的根目录时,就会使用全局的目录,类似局部变量与全局变量。再次访问http://localhost/下的非图片资源会代理到端口为8080服务器。