0.背景

用vue或者angular写了一个前端项目,本地正常运行,因为vue和angular都有自己的路由系统,我们访问页面时通过配置来确定是否使用’#’来表示前台路由信息。

比如下面这两个路由地址:

localhost:4200/stu?id=3

localhost:4200/#/stu?id=3

这两个路由地址都是前台地址,而id=3是路由参数。

如果此时用nginx代理前台来访问,则会出现问题。

localhost:4200/#/stu?id=3 这个地址,nginx默认不进行解析,这时访问就正常。

localhost:4200/stu?id=3这个地址,nginx如果没有特别配置的话,nginx会将这个地址当作一个后台的get地址进行请求,而不会当成一个前台的url进行访问。

1.解决办法

我们需要简单配置一下nginx,我们首先打开nginx的配置文件,然后参考下面进行修改

  server {
        listen       80;
        server_name  localhost;

        location / {
            root   /www/dist;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
}

其中,root指向的前端静态文件的根目录。

try_files :设置文件查找规则为 $uri $uri/ /index.html。即3个规则,先从 $uri 查找,再从 $uri/ 目录中查找,最后查找 /index.html

这样的话访问localhost/stu?id=3 的时候,nginx就会当成前台地址不会当成后台get请求进行解析了。

分类: 常见报错