Nginx 是怎么工作的?
当我们用 tomcat 做为服务器,假设一台 tomcat 每秒能处理 1 万个请求,那如果现在每秒有 10 万个请求怎么办?再具体一点说,就是我有一个支付服务,每秒只能处理 1 万个请求,现在用户量大起来了,高峰期每秒有 10 万个请求。
我们可以换更高配置的服务器,能抗住 10 万 QPS 的那种。另一种方式就是做水平扩展,或者说搭建一个支付服务的集群。
我在图中用两台 tomcat 表示一个支付服务的集群。此时,问题就变成了。浏览器请求过来之后,怎么去访问集群中某一台具体的服务器,让服务器处理请求。
解决方法就是使用网关来做负载均衡,并利用负载均衡算法来选择一台合适的机器处理请求。Nginx 就能很好实现这个效果,此时客户端统一请求 Nginx 服务器,然后由 Nginx 转发到具体的机器,如上图所示。
Nginx 配置的核心就是 nginx.conf
配置文件,配置文件中最关键的就是配置 server(虚拟主机)
。通常的做法是在 nginx.conf
文件中,用 include /etc/nginx/conf.d/*.conf
来指定 server
文件的位置,在该目录下配置过个 .conf
文件。
当我们用 http://172.17.0.2/a?p=xx&q=yy
进行访问的时候,就会先匹配到摸个 .conf
文件,再匹配其中的 location
规则。匹配到 location 之后,就会执行 location 中的配置,一般会配置动态路由 proxy_pass
或者路由到静态文件(static规则)。
以上,是 Nginx 最基本的玩法,实际上 locaiton 的匹配规则,以及 rewrite 的规则有很多值得注意的细节,有机会再说吧。