Nginx 安装与配置规则入门详解

2019-10-17 17:01:36王旭

3)root 与 alias 的区别:

alias 只能作用在 location 中,而 root 可以存在 server、http 和 location 中。

alias 后面必须要用 “/” 结束,否则会找不到文件,而 root 则对 “/” 可有可无。

3. try_file

location /test/ {
  try_files $uri $uri/ /a/1.png;
}

try_files 去尝试到网站目录读取用户访问的文件,如果第一个变量存在,就直接返回;不存在则继续读取第二个变量,如果存在,直接返回;不存在则跳转到第三个参数上。

$uri 是 nginx 的一个变量,存放着用户访问的地址。比如访问http://www.xxx.com/index.html,$uri就是 /index.html.

$uri/ 代表访问的是一个目录,比如:http://www.xxx.com/hello/test/ ,那么$uri/ 就是 /hello/test/.

例如上面这条规则:请求 http://localhost:8080/test/2.png 这个地址时,try_files 会判断他是文件,还是一个目录,结果发现他是文件,与第一个参数 $uri 变量匹配。然后去到网站目录下去查找 test/2.png 文件是否存在,如果存在直接读取返回。如果不存在则跳转到第三个参数,即返回网站根目录 + /a/1.png 文件(/usr/local/var/www/a/1.png)。

更多用法:https://www.jb51.net/article/156899.htm

4. rewrite

rewrite 语法

rewrite 功能就是实现 url 重写以及重定向。

语法rewrite regex replacement [flag];

rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用,例如 http://www.xxx.com/a/b/index.html?param=1&u=str 只对 /a/b/index.html 重写。

rewrite 的执行顺序:

执行server块的rewrite指令 执行location匹配 执行选定的location中的rewrite指令

flag 标志位:

last : 相当于Apache的[L]标记,表示完成rewrite break : 停止执行当前虚拟主机的后续 rewrite 指令集 redirect : 返回302临时重定向,地址栏会显示跳转后的地址 permanent : 返回301永久重定向,地址栏会显示跳转后的地址
location /home/ {
  rewrite ^/home/test/ http://www.baidu.com;
}

上面这个规则:访问 http://localhost:8080/home/test/ 这个地址时,页面会重定向到 http://www.baidu.com。

一些小tips:

如何 nginx 重定向 url,但不改变浏览器中 url 的显示?

proxy_pass 可指定反向代理

更多用法:https://www.jb51.net/article/134233.htm

三、一些命令行的配置(mac OS)

1. 如何在命令行用 vscode 打开文件

cd /usr/local/bin/
ln -s "/Applications/Visual Studio Code.app/Contents/MacOS/Electron" vscode

其中 /Applications/Visual Studio Code.app/Contents/MacOS/Electron 为 vscode 的可执行文件,ln -s 命令就是将其通过软连接的方式放到 /usr/local/bin/ 目录下。这样就可以在命令行的其他地方通过 vscode 命令打开文件了。