1 location

location是根据Server匹配到的请求路径和关键字去响应和处理。

(1) 匹配符

  1. location [ = | ~ | ~* | ^~] url {
  2. }
  • =:精确匹配; 如只匹配根目录结尾的请求,后面不能带任何字符串。成功就处理请求, 不再向下匹配
  • ^~:优先匹配; 用于不含正则表达式的 url 前,成功就处理请求, 不再向下匹配
  • ~* 或 !~:不区分大小写的正则匹配
  • ~ 或 !~*:区分大小写的正则匹配

注: 若不加~, 默认是 区分大小写的普通匹配

(2) 匹配顺序

按匹配的优先级: 精确匹配 > 优先匹配 > 正则匹配 > 通用匹配

1) 精确匹配

  1. location = / {
  2. # 精确匹配1
  3. }
  4. location = /login {
  5. # 精确匹配2
  6. }

2) 优先匹配

  1. location ^~ /static {
  2. # 优先匹配1
  3. }

3) 正则匹配

  1. location ~ \.(gif|jpg|png|js|css)$ {
  2. # 正则匹配1
  3. }
  4. location !~ \.html$ {
  5. # 正则匹配2
  6. }

4) 通用匹配

  1. location / {
  2. # 通用匹配1
  3. }
  4. location /login {
  5. # 通用匹配2
  6. # 匹配任何 /login 开头的URL后, 还要继续往下搜索,
  7. # 只有后面的精确匹配,优先匹配,正则匹配 都没有匹配到, 才会执行这一条
  8. }

2 proxy_pass

设置代理,把请求转发到其它IP端口

请求被代理跳转到: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; }

  1. <a name="bbMfo"></a>
  2. # 3 root
  3. 请求路径会完全追加到root上<br />请求示例: http://www.baidu.com/hi/index.html
  4. ```nginx
  5. location /hi/ {
  6. root /home/ws/html;
  7. }
  8. # 请求会访问 /home/ws/html/hi/index.html

4 alias

请求路径部分追加到alias上, 匹配的部分被吞掉
请求示例: http://www.baidu.com/hi/index.html

  1. location /hi/ {
  2. alias /home/ws/html;
  3. }
  4. # 请求会访问 /home/ws/htmlindex.html
  5. # 所以要注意, alias结尾最好加一个/