- 1 location
- 2 proxy_pass
- http://www.baidu.com/hi/index.html 为例。请求都匹配目录/hi/">访问地址都是以:http://www.baidu.com/hi/index.html 为例。请求都匹配目录/hi/
- http://127.0.0.1:8080/index.html">请求被代理跳转到:http://127.0.0.1:8080/index.html
- http://127.0.0.1:8080/hi/index.html">请求被代理跳转到:http://127.0.0.1:8080/hi/index.html
- 4 alias
1 location
location是根据Server匹配到的请求路径和关键字去响应和处理。
(1) 匹配符
location [ = | ~ | ~* | ^~] url {
}
- =:精确匹配; 如只匹配根目录结尾的请求,后面不能带任何字符串。成功就处理请求, 不再向下匹配
- ^~:优先匹配; 用于不含正则表达式的 url 前,成功就处理请求, 不再向下匹配
- ~* 或 !~:不区分大小写的正则匹配
- ~ 或 !~*:区分大小写的正则匹配
(2) 匹配顺序
按匹配的优先级: 精确匹配 > 优先匹配 > 正则匹配 > 通用匹配
1) 精确匹配
location = / {
# 精确匹配1
}
location = /login {
# 精确匹配2
}
2) 优先匹配
location ^~ /static {
# 优先匹配1
}
3) 正则匹配
location ~ \.(gif|jpg|png|js|css)$ {
# 正则匹配1
}
location !~ \.html$ {
# 正则匹配2
}
4) 通用匹配
location / {
# 通用匹配1
}
location /login {
# 通用匹配2
# 匹配任何 /login 开头的URL后, 还要继续往下搜索,
# 只有后面的精确匹配,优先匹配,正则匹配 都没有匹配到, 才会执行这一条
}
2 proxy_pass
设置代理,把请求转发到其它IP端口
- proxy_pass的url有/, 会吞掉匹配的内容, 否则不会
```nginx
访问地址都是以:http://www.baidu.com/hi/index.html 为例。请求都匹配目录/hi/
请求被代理跳转到:http://127.0.0.1:8080/index.html
location /hi/ { proxy_pass http://127.0.0.1:8080/; # 注意一定要加上http:// }
请求被代理跳转到:http://127.0.0.1:8080/hi/index.html
location /hi/ { proxy_pass http://127.0.0.1:8080; }
<a name="bbMfo"></a>
# 3 root
请求路径会完全追加到root上<br />请求示例: http://www.baidu.com/hi/index.html
```nginx
location /hi/ {
root /home/ws/html;
}
# 请求会访问 /home/ws/html/hi/index.html
4 alias
请求路径部分追加到alias上, 匹配的部分被吞掉
请求示例: http://www.baidu.com/hi/index.html
location /hi/ {
alias /home/ws/html;
}
# 请求会访问 /home/ws/htmlindex.html
# 所以要注意, alias结尾最好加一个/