虚拟主机
1 | server { |
location
语法:1
2
3location [=|^~|~|~*] uri {
}
模式 | 描述 |
---|---|
location = /uri | = 表示精确匹配(只有完全匹配上才能生效) |
location ^~ /uri | 前缀匹配(在正则之前) |
location ~ pattern | 区分大小写的正则匹配 |
location ~* pattern | 不区分大小写的正则匹配 |
location /uri | 前缀匹配(在正则之后) |
location / | 通用匹配(相当于switch中的default) |
说明:使用正则定义的location在配置文件中出现的顺序很重要,因为找到第一个匹配的正则后,查找就停止了。
rewrite
语法:1
rewrite regex replacement [flag];
flag标志位:
- last: 停止当前这个请求,并根据rewrite匹配的规则重新发起一个请求,新请求又从第一阶段开始执行(nginx运行分十一个执行阶段)
- break: 相对last,break并不会重新发起一个请求,只是跳过当前的rewrite阶段,并执行本请求后续的执行阶段
- redirect: 返回302临时重定向(地址栏会显示跳转后的地址)
- permanent: 返回301永久重定向(地址栏会显示跳转后的地址)
1 | server { |
缓存
1 | location ~ \.(ico|gif|jpg|jpeg|png)$ { |
压缩
1 | http { |
防盗链
1 | location ~ \.(ico|gif|jpg|jpeg|png)$ { |
反向代理
1 | location ^~ /api/ { |
负载均衡
负载均衡策略
在nginx中默认支持三种负载均衡策略:轮询(round-robin)、最少连接数(least-connected)、IP哈希(ip-hash)。
- 轮询(默认):对应用服务器的请求以循环方式分发
- 最少连接数:下一个请求被分配给具有最少活动连接数的服务器
- IP哈希:用基于客户端IP地址的哈希函数确定应为下一个请求选择哪个服务器
负载均衡配置
1 | http { |
HTTPS
1 | server { |
解决Windows下443端口被其他进程占用导致Nginx无法启动的问题
1 | REM 需要以管理员身份在命令窗口下执行以下dos命令 |