nginx的location、root、alias指令用法和区别

root

[root]
语法:root path
默认值:root html
配置段:http、server、location、if

alias

[alias]
语法:alias path
配置段:location

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

root实例


location ^~ /t/ {
     root /www/root/html/;
}
#如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

alias 实例


location ^~ /t/ {
 alias /www/root/html/new_t/;
}
#如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

ubuntu

  1. sudo apt update
  2. sudo apt install nginx

  3. 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下
  4. 程序文件在/usr/sbin/nginx
  5. 日志放在了/var/log/nginx中
  6. 并已经在/etc/init.d/下创建了启动脚本nginx
  7. 默认的虚拟主机的目录设置在了/var/www

启动

  1. ps -ef|grep nginx

  2. 启动 sudo nginx

  3. sudo nginx -s reload #服务重载,配置文件更新后,需要运行此命令

  4. sudo nginx -s stop # 强制停止服务,丢弃正在处理的任务

  5. sudo nginx -s qui # 等待任务处理后退出

  6. sudo vim /etc/nginx/nginx.conf

  7.         server {
                    listen  8000;
                    server_name localhost;
    
                    location /tag {
                            root /var/www/html;
                            index index.html index.htm;
                    }
            }
    
    # 把文件放在 /var/www/html 下面
    访问地址 http://198.13.60.35:8000/tag/
  8. 卸载

    1. 删除nginx,-purge包括配置文件 sudo apt --purge remove nginx

    2. sudo apt autoremove

    3. ```
      罗列出与nginx相关的软件并删除
      dpkg --get-selections|grep nginx
      sudo apt-get --purge remove nginx
      sudo apt-get --purge remove nginx-common
      sudo apt-get --purge remove nginx-core

    ```
    1. 查看nginx正在运行的进程,如果有就kill掉
      
      ps -ef |grep nginx
      sudo kill -9 XXX
02-12 14:46