为Vue.js配置nginx分发项目

时间:2018-05-12 02:09:21

标签: nginx vue.js

我将nginx用于Vue.js dist服务器。

我的Nginx配置如下:

server {
    listen       80;
    server_name  qy.abc.xyz;

    charset utf-8;
    access_log  /var/log/nginx/qy.abc.xyz.access.log  main;

    location / {
        access_log /data/nginx_log/access.log main;
        error_log  /data/nginx_log/error.log error;
        root /data/ldl/repo/vue_user_site/dist;
        index  index.html;

        try_files $uri $uri/ /index.html;

    }
    ...

我可以在浏览器中成功访问qy.abc.xyz,但我知道在我的Vue.js中有很多路由,如果我访问qy.abc.xyz/indexqy.abc.xyz/xxx/xxx,Nginx将获得404 Not Found错误。

您知道dist目录由许多hashed-name.jsindex.html组成。

如何为我的项目配置我的Nginx?

修改-1

我尝试使用此配置,但无法正常工作。

location / {
    access_log /data/nginx_log/access.log main;
    error_log  /data/nginx_log/error.log error; 
    #root /data/ldl/repo/vue_user_site/dist;
    #index  index.html;

    #try_files $uri $uri/ /index.html;
    return 200 /index.html;
}

2 个答案:

答案 0 :(得分:0)

我需要配置URL Rewrite

你可以试试这个

location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root <your static file root>
}
location / {
    return 200 /index.html
    # or use rewrite
    rewrite ^.*$ /index.html
}

或者使用一些具有nodeasp.net core等路线的服务器代码来发送您的HTML

答案 1 :(得分:0)

按照我在Nginx中的单页应用程序配置设置:

server {

    listen 80;
    server_name qy.abc.xyz;

    #access_log /var/log/logs/qy.abc.xyz.access.log  main; 

    charset utf-8;

    index index.html;
    root /data/ldl/repo/vue_user_site/dist;


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

    }

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

    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}