Skip to main content

nginx.conf 中 server 模块 location

· 3 min read
Zeffon Wu

nginx.conf 配置中,http 指令块中的 server 模块的 location 是主要匹配客户端发送过来 url 的

nginx 服务器匹配

单个 location

当我们访问 localhost:88 将会被转到 /home/html 目录下 主页是 index.html 例如我们访问 localhost:88/img/a.png 会访问到服务器 /home/nginx/img/a.png

server {
listen 88;
server_name localhost;

location / {
root /home/nginx;
index index.html;
}
}

多个 location

如果访问 localhost:88/img 匹配到 img 这样会将 /img 拼接到 /home/demo 的后面,这时候就会访问到服务器/home/demo/img目录下 例如我们访问 localhost:88/img/a.png 会访问到服务器 /home/demo/img/a.png

server {
listen 88;
server_name localhost;

location / {
root /home;
index index.html;
}

location /img {
root /home/demo;
index index.html;
}
}

采用别名 alias,这样可以自定义 url 上的参数 访问 localhost:88/demo/a.png 匹配 demo 会将 demo 拼接在 /hemo 后面,访问到服务器/home/demo/a.png 访问 localhost:88/static/a.png 识别出别名 alias 会将 static 替换 /home/demo,也访问到服务器/home/demo/a.png 所以localhost:88/demo/a.pnglocalhost:88/static/a.png 两者可以达到同样的效果,也可以同时使用

server {
listen 88;
server_name localhost;

location / {
root /home;
index index.html;
}

location /demo {
root /home;
index index.html;
}

location /static {
alias /home/demo;
index index.html;
}
}

location 匹配规则

1. 空格 :默认匹配,普通匹配

location / {
root /home;
}

2. = :精确匹配

location = /demo/img/a.png {
root /home;
}

3. ~* :匹配正则表达式

不区分大小写,符合图片的显示

location ~* .(GIF|jpg|png|jpeg) {
root /home;
}

4. ~ :匹配正则表达式

区分大小写,GIF 必须大写才能匹配到

location ~ .(GIF|jpg|png|jpeg) {
root /home;
}

5. ^~ :以某个字符路径开头

location ^~ /demo/img {
root /home;
}