Nginx 的地位不言而喻, 几乎所有以 java 为主要开发语言的的公司都会用到,所以 Nginx 就成了 java 开发人员必须掌握的技能之一。
学习 Nginx 说白了就是要学习它的指令(directive), 本文涉及到的指令有:server、location、alias、autoindex。
下面就逐一介绍这些指令,最后使用这些指令来搭建一个文件服务器。
1. server
这里涉及到一个技术:虚拟托管(virtual hosting),nginx 使用 server 指令来支持该技术。
虚拟托管是一种在单个服务器(或服务器池)上托管多个域名(对每个域名分别进行处理)的方法。这允许一台服务器共享其资源,例如内存和处理器周期,而不要求提供的所有服务使用相同的主机名。虚拟主机这一术语通常用于指web服务器,但其原理确实适用于其他互联网服务。
2. location
根据 uri 进行路由匹配的指令,支持前缀匹配和正则匹配,优先前缀匹配,然后才是正则匹配。
# 使用 =, 精准匹配
location = / {
[ configuration A ]
}
# 前缀匹配,以最长匹配为准
location / {
[ configuration B ]
}
location /documents/ {
[ configuration C ]
}
# ^~ 表示: 最长前缀匹配后,不再检查正则匹配
# 注意:~^ 和 ~ ^ 则表示正则匹配, 只有 ^ 不是正则,会报404!
location ^~ /images/ {
[ configuration D ]
}
# 正则匹配以(~*或~)开始: ~* 表示大小写不敏感(默认), ~ 大小写敏感
# 正则匹配顺序,按照书写顺序,匹配到就不再往下匹配
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}
# / 匹配configuration A, (精准匹配)
# /index.html 匹配configuration B, (前缀匹配)
# /documents/document.html 匹配configuration C, (最长前缀匹配)
# /images/1.gif 匹配 configuration D, (前缀匹配后,立刻停止检查)
# /documents/1.jpg 匹配 configuration E. (前缀匹配后,又继续正则匹配)
3. alias
为指定的 location 定义一个替换项。
# 当访问 /i/top.gif, /data/w3/images/top.gif 文件被返回.
location /i/ {
alias /data/w3/images/;
}
4. autoindex
打开或关闭目录列表
以上指令都比较简单,相对复杂点的就是 location ,我曾经解决线上问题而深入研究过匹配规则。
最后使用这 4 个指令搭建一个简单的文件服务器:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /doc/ {
alias F:/;
autoindex on;
}
}
配置后,重启nginx,效果如下:
如果觉得还不错的话,关注、分享、原创不易,且看且珍惜~