首页 > 技术文章 > 与docker无关,单独安装nginx,解决vue多项目部署、刷新404 的问题

hoge66 2021-02-01 18:11 原文

   下午两点,刚睁睡眼,突然收到一则消息,刷新页面有问题,404了。如果当初不纠结vue项目链接带#号的问题,这个404就不会发生。

    docker中一顿操作nginx,找了个教程,结果试了很多遍也搞不定,首先,弄不明白 docker 重启了容器,nginx的配置是否也发生变化;

    1、如果改错了nginx.conf 的格式,docker直接起不来了,说明有一定的作用;但是nginx.conf 中的server节点无论怎么修改,看不到任何效果;

    查网,说是得用docker中nginx的路径,而非宿主机的路径:

  

docker run \
-u root \
--name nginx \
-d \
-p 8089:80 \
-v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/logs:/var/log/nginx \
-v /opt/nginx/html:/usr/share/nginx/html \
-v /opt/nginx/conf:/etc/nginx/conf.d \
--privileged=true 4bb46517cac3

  改了很久,放弃了,直接装个nginx吧,不用docker了。

2、按之前的教程,装了个新的nginx,端口还是用的8089;

    规避了配置生效的问题,怎么改配置都生效,只要重启:

/usr/local/nginx/sbin/nginx -s reload

  问题是无论怎么访问都是403,访问的是第二个项目,怎么搞都是403,当然没试第一个堂堂正正放在nginx默认的html中项目,事实证明这个肯定没问题;

查了很久的403,实际上是location path 后面多一个斜杠/ 去掉就好了。

 

双项目解决之后,再来看刷新404 的问题,比较好解决了,直接将原来的教程走一次就行,try-file ,注意路由要用本项目自用的,不要共用,否则跳别的项目去了;

 

 

location / {
            root   html;
            index  index.html index.htm;
        }

        location /BaseFrame {
            alias /opt/nginx/BaseFrame;
            try_files $uri $uri/ @baserouter;
            index  index.html index.htm;
        }
        location @baserouter {
            rewrite ^.*$ /BaseFrame/index.html last;
        }

  

其中,改了一下nginx的用户,就是第一行的root,据说是跟项目启动用保持一致,不用原来的nobody用户。

 

 

 一下午就这么过去了。

 

推荐阅读