Niginx中Vue Router 历史(history)模式的配置
快速配置
将build
后的文件直接丢到niginx
目录下的html文件夹中,然后配置nginx.conf
,就可以在快速的实现niginx
history模式的配置了。
location /{
# 可使用 root 指定路径
# root D:/dist;
try_files $uri $uri/ /index.html;
}
原理解析
try_files
try_files是nginx中http_core核心模块所带的指令。有两种格式:
try_files file ... uri;
try_files file ... =code;
使用指令会:
- 按照指定的顺序去匹配文件,并返回第一个匹配作为响应。
- 其检查的路径是按
root
或alias
配置的。 - 可以通过配置
/
来匹配目录下的文件。 - 没有找到则会重定向到最后一个参数中指定的
uri
中,比如说新的location
中的内容。
location /images/ {
try_files $uri /images/default.gif;
}
location = /images/default.gif {
expires 30s;
}
- 如果是格式2,如果最后一个参数是 = 404 ,若给出的file都没有匹配到,则最后返回404的响应码。
$uri
http {
include mime.types;
default_type application/octet-stream;
# 配置输出的log
log_format main '$uri --- $request_uri -- $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
访问了三次不同的路径
- http://127.0.0.1:8023/index
- http://127.0.0.1:8023/img/flytree.jpg
- http://127.0.0.1:8023/mobile
- http://127.0.0.1:8023/test
日志如下:
/index.html --- /index -- 127.0.0.1 - - [07/Jul/2021:23:00:06 +0800] "GET /index HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64" "-"
/img/flytree.jpg --- /img/flytree.jpg -- 127.0.0.1 - - [07/Jul/2021:23:02:25 +0800] "GET /img/flytree.jpg HTTP/1.1" 200 32273 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64" "-"
/index.html --- /mobile -- 127.0.0.1 - - [07/Jul/2021:23:03:03 +0800] "GET /mobile HTTP/1.1" 200 1232 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64" "-"
/test --- /test -- 127.0.0.1 - - [07/Jul/2021:23:08:34 +0800] "GET /test HTTP/1.1" 301 169 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64" "-"
/test/index.html --- /test/ -- 127.0.0.1 - - [07/Jul/2021:23:08:34 +0800] "GET /test/ HTTP/1.1" 200 9 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.64" "-"
可以看出$uri
是要访问的文件名,就是访问地址路径后面的内容,如果没有具体文件,就会去index.html
。
若是如下配置:
location /images/ {
root D:/dist;
try_files $uri $uri/ /public/flytree.jpg;
}
若请求http://127.0.0.1:8023/cc.jpg
,没有cc.jpg
有/public/flytree.jpg
的情况下,则顺序去匹配:
- D:/dist/cc.jpg 无则
- D:/dist/cc.jpg/index.html 无则
- D:/dist/public/flytree.jpg
所以最后会看到flytree.jpg的图片。
niginx补充
基本使用命令
- 开启:
在nginx目录下使用start nginx
命令,或双击程序打开。 - 停止:
在nginx目录下使用nginx.exe -s stop
命令快速停止,nginx.exe -s quit
退出。 - 重启:
在nginx目录下使用nginx.exe -s reload
命令重启。