Steve's Blog

Talk is cheap, show me the code.

0%

nginx极简入门

由于分布式session一文中用到了Nginx相关知识,因此在此处做下总结。本文不是Nginx基础教程,而只是简单的学习总结,如果需要详细的教程,请参考官网文档。

1. 什么是nginx服务器

2. nginx能干什么

2.1 负载均衡

2.2 反向代理

2.3 动静分离

3. nginx

3.1 常用命令

nginx -v

nginx -s stop

ps -ef | grep nginx

1
2
# 重新加载配置文件
nginx -s reload

3.2 nginx配置文件

由3部分组成

全局块

event块

服务器和用户网络的连接,最大连接数等

http块

配置最频繁的地方

http全局块 + server块

1
2
3
4
5
6
7
8
server 
# 监听端口

listen 8080;

server_name localhost;

location块

反向代理实例 通过改hosts文件和nginx配置,通过nginx代理访问本地无法直接访问的地址。

负载均衡实例:http块

upstream your_server_name {

server 127.0.0.1:9090;

server 127.0.0.1:9091;

}

负载均衡策略:轮询、weight、ip_hash(根据请求ip做hash,每个用户访问的机器固定,可以解决分布式session问题)、fair(根据服务器的响应时间来分配,响应时间越短的优先分配)

动静分离:把静态文件独立成单独的域名,放在独立的服务器上,是比较主流的方式;第二种是动态和静态放一起发布,通过nginx分开(为啥要分开?)

提高访问效率。expires参数减少不常变动文件的缓存过期时间。

动静分离的例子有点挫,后面自己找一个吧。


高可用例子:nginx宕机了就没法实现反向代理了,如何高可用?2台nginx + 都安装keepalived + 对外使用同一个虚拟ip。

配置keepalived后,实现高可用。

  • 启动nginx(两个均配置好tomcat )

  • 启动keepalived

原理

master进程和worker进程

worker争抢client请求

  • 机制的好处?
  • 连接数worker_connection, 一个client最多占用worker几个连接?2或4个(异步请求算2个连接,如果需要请求tomcat就4个,否则2个。)
  • 一个master,4个worker,每个worker怎么计算最大并发数? 普通静态代理:worker_connection worker_count / 2 ;http反向代理的话:worker_connection worker_count / 4