### 18.2.2 配置nginx Nginx的配置conf/nginx.conf下,包含多个指令块,我们主要关注http块和location块 * http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。 * location块:配置请求的路由,以及各种页面的处理情况。 由于本章主要是讲水平扩展springboot应用,因此,我们需要配置http块里增加upstream 指令,内容如下: ~~~json http { upstream backend { server 127.0.0.1:9000; server 127.0.0.1:9001 } } ~~~ backend也可以为任意名字,我们在下面的配置将要引用到 ~~~ location / { proxy_pass http://backend; } ~~~ localtion 后可以是一个正则表达式,我们这里用/ 表示所有客户端请求都会传给http://backend,也即是我们配置的backend指令的地址列表。因此,整个http块看着类似下面的样子: ~~~json http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server 127.0.0.1:9000; server 127.0.0.1:9001; } server { listen 80; server_name localhost; location / { proxy_pass http://backend; } } } ~~~ 我们在下一章里创建一个springboot应用,并分别以9000和9001俩个端口启动,然后在Spring Session的基础上来一步一步来完成Spring Boot应用的水平扩展 > **注意** Nginx 反向代理默认情况下属轮询后台应用,还有一种配置设置ip_hash,这样,固定客户端总是方向代理到后台的某一个服务器。这种设置方式就不需要使用Spring Session来管理会话,使用Tomcat的会话管理即可。但弊端是如果服务器宕机或者因为维护重启,则会话丢失。ip_hash设置如下 > > ~~~java > upstream backend { > ip_hash; > server 127.0.0.1:9000; > server 127.0.0.1:9001 > } > ~~~