美文网首页编程娱乐
react router项目部署nginx 配置问题

react router项目部署nginx 配置问题

作者: TroyZhang | 来源:发表于2017-11-15 00:08 被阅读3204次

    背景:项目中使用了reactreact-router开发,在部署到nginx服务器时遇到了以下问题

    history

    history url样例 特点
    hash history /#/user/profile 不需要服务器支持
    browser history /user/profile react-router官方推荐,需要服务器支持(因为是SPA项目,url切换时需要服务器始终返回index.html)

    nginx配置

    如下介绍使用browser history模式部署到nginx服务器

    部署到nginx根目录

    访问路径:http://localhost/

    # nginx配置
    location / {
        root   html;
        index  index.html;
        # url 切换时始终返回index.html
        try_files $uri /index.html;
    }
    

    部署到nginx子目录

    假设部署到/app目录下,访问路径:http://localhost/app

    # nginx配置
    location /app {
        root   html;
        index  index.html;
        # url 切换时始终返回index.html
        try_files $uri /app/index.html;
    }
    # 图片样式缓存1年
    location ~* /app.*\.(js|css|png|jpg)$
    {
        access_log off;
        expires    365d;
    }
    # html/xml/json 文件不缓存
    location ~* /app.*\.(?:manifest|appcache|html?|xml|json)$
    {
        expires    -1;
    }
    
    // package.json
    "homepage": "http://localhost/app",
    
    // react-router路由配置
    // 注意指定basename
    <BrowserRouter basename='/app'>
    </BrowserRouter>
    

    开启nginx的gzip压缩

    # 开启gzip
    gzip on;
    
    # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
    gzip_min_length 1k;
    
    # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间
    gzip_comp_level 1;
    
    # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    
    # 是否在http header中添加Vary: Accept-Encoding,建议开启
    gzip_vary on;
    
    # 禁用IE 6 gzip
    gzip_disable "MSIE [1-6]\.";
    

    整体配置

    # nginx.conf整体配置大概如下:
    http {
        # 开启gzip
        gzip on;
        # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
        gzip_min_length 1k;
        # gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明
        gzip_comp_level 1;
        # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
        gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
        # 是否在http header中添加Vary: Accept-Encoding,建议开启
        gzip_vary on;
        # 禁用IE 6 gzip
        gzip_disable "MSIE [1-6]\.";
    
        server {
            location /app {
                root   html;
                index  index.html;
                # url 切换时始终返回index.html
                try_files $uri /app/index.html;
            }
            # 图片样式缓存1年
            location ~* /app.*\.(js|css|png|jpg)$
            {
                access_log off;
                expires    365d;
            }
            # html/xml/json 文件不缓存
            location ~* /app.*\.(?:manifest|appcache|html?|xml|json)$
            {
                expires    -1;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:react router项目部署nginx 配置问题

        本文链接:https://www.haomeiwen.com/subject/nfvqvxtx.html