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的几种匹配方式

            普通匹配

  1.             location = URI { configuration } #精确匹配
  2.             location ^~ URI { configuration } #非正则匹配
  3.             location [space] URI { configuration} # # 前缀匹配

            正则匹配

  1.             location ~ URI { configuration } #大小写敏感匹配
  2.             location ~* URI { configuration } #大小写不敏感匹配

            几种匹配方式的优先级

             整体规则按照先普通匹配,然后再正则匹配,如果正则不匹配,则回退至上一个普通匹配。其中普通匹配没有顺序之                   分,哪个匹配最精确,就使用哪个location,正则匹配按照规则的书写顺序进行。

  1.               = 精确匹配,匹配后停止后续匹配,直接执行该匹配后的configuration.
  2.              [空格] 前缀匹配,匹配后,继续更长前缀匹配和正则匹配。
  3.              ^~ 非正则匹配,匹配该规则后,停止继续正则匹配。
  4.              ~ 区分大小写的正则匹配,按顺序匹配,一旦匹配上即停止后续匹配。
  5.              ~* 不区分大小写的匹配,一旦匹配即停止后续匹配。

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后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

Logo

前往低代码交流专区

更多推荐