Nginx是一个高性能的http和反向代理web服务器,当然也可以作为邮件代理服务器。本文主要扫盲http服务器与反向代理。

反向代理是相对代理而言的,比如翻墙上网,对于客户端来说,翻墙软件就是正向代理服务器,它代理我们的请求,然后去目标服务器获取资源,再返回给我们;反向代理站在服务器的角度,客户端访问nginx时,nginx会将请求分发到后端真实服务器上,客户端认为nginx就是真实服务器,这时nginx就起到一个反向代理的作用。代理、反向代理只是站的角度不一样,一个叫法而已。

许多公司使用F5硬件级负载均衡,相比nginx软负载更强劲,当然更好的东西是收费的,如今nginx已被F5收购。

打开nginx官网http://nginx.org/,先下载一个nginx,这里为了快速扫盲,使用windows版,下载后直接解压即可。

Nginx快速扫盲_java

在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服务器。