NGINX配置

527 阅读1分钟

由于最近遇到vue项目history打包,nginx部署后刷新404的问题,所以撸了一遍nginx的文档

下面是解决的方案

原因

由于history模式/xxx刷新后,nginx内找不到对应的路径,所以才报404错误

解决方案便是把这个路径重新定位到我们的index.html,然后交给路由去处理

代码实现

所有的/xxx定位到/的路由,然后try_files定位到@rewrites处理

location / {
   try_files $uri $uri/ @rewrites;
}

location @rewrites {
   rewrite ^(.+)$ /index.html last;
}

以上

http转https

当nginx需要把外部的http请求全部转成https时,便需要以下配置

注:由于nginx里面没有 & |等逻辑符,所以需要以一个变量来处理

当发现协议头是http时,并且host不是localhost时(方便本地开发),即跳转https

   set $redirectFlag '0';
    # if shceme equals http
    if ($scheme = 'http') {
      set $redirectFlag '${redirectFlag}0';
    }
    # if host equals localhost then do not redirect
    if ($host = 'localhost') {
      set $redirectFlag '0';
    }
    # if redirect-flag equals double 0, then redirect to https
    if ($redirectFlag = '00') {
      return 301 https://$host$request_uri;
    }

以上