Nginx是一个高性能的http和反向代理web服务器,当然也可以作为邮件代理服务器。本文主要扫盲http服务器与反向代理。
反向代理是相对代理而言的,比如翻墙上网,对于客户端来说,翻墙软件就是正向代理服务器,它代理我们的请求,然后去目标服务器获取资源,再返回给我们;反向代理是站在服务器的角度,客户端访问nginx时,nginx会将请求分发到后端真实服务器上,客户端认为nginx就是真实服务器,这时nginx就起到一个反向代理的作用。代理、反向代理只是站的角度不一样,一个叫法而已。
许多公司使用F5硬件级负载均衡,相比nginx软负载更强劲,当然更好的东西是收费的,如今nginx已被F5收购。
在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 /test/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服务器。更多精彩,下次分享。