VUE项目非根路径部署(nginx)
1、首先贴上nginx配置代码location ^~ /vue/ {limit_except GET POST {denyall; }proxy_set_header Host localhost;proxy_set_he...
1、首先贴上nginx配置代码
location ^~ /vue/ {
limit_except GET POST {deny all; }
proxy_set_header Host localhost;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:6255/;
}
location ^~ /abc/ {
limit_except GET POST {deny all; }
alias E:/Program/idea/gdzd_web_vue/dist/;
index index.html;
try_files $uri $uri/ /abc/index.html;
}
2、配置解释
2.1 配置路径: ^~ /vue/
作用:一般配置在开发环境中,直接反向代理node的服务(localhost:6255)。主要解决开发中存在跨域请求的问题,否则跨域请求在复杂请求的情况下会发送options请求。
location的几种匹配方式
普通匹配:
- location = URI { configuration } #精确匹配
- location ^~ URI { configuration } #非正则匹配
- location [space] URI { configuration} # # 前缀匹配
正则匹配
- location ~ URI { configuration } #大小写敏感匹配
- location ~* URI { configuration } #大小写不敏感匹配
几种匹配方式的优先级
整体规则按照先普通匹配,然后再正则匹配,如果正则不匹配,则回退至上一个普通匹配。其中普通匹配没有顺序之 分,哪个匹配最精确,就使用哪个location,正则匹配按照规则的书写顺序进行。
- = 精确匹配,匹配后停止后续匹配,直接执行该匹配后的configuration.
- [空格] 前缀匹配,匹配后,继续更长前缀匹配和正则匹配。
- ^~ 非正则匹配,匹配该规则后,停止继续正则匹配。
- ~ 区分大小写的正则匹配,按顺序匹配,一旦匹配上即停止后续匹配。
- ~* 不区分大小写的匹配,一旦匹配即停止后续匹配。
2.1 配置路径: ^~ /abc/
作用:生产中,使用文件部署的方式,并且解决非根路径部署问题,选择使用alias,而不是root,原因如下:
nginx指定文件路径有两种方式root和alias,指令的使用方法和作用域:
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location
root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录的定义。
alias在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
alias只能位于location块中。root可以不放在location中
非常重要的区别是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后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。
更多推荐
所有评论(0)