如何配置nginx为单页应用

时间:2016-06-25 06:36:27

标签: nginx single-page-application

我正在构建一个使用nginx作为Web服务器提供静态文件的SPA。我需要一种方法来为root index.html文件提供一些路由:

  • /水疗/路由
  • / otheroute /
  • /测试
  • /另一个/一个/

但仍然允许提供静态文件。

我尝试过很多方法,但没有一种方法可以做到。

1 个答案:

答案 0 :(得分:3)

你应该有nginx.conf这样的(我已经从我的一个古老的角项目中取得了这个):

server {
    ## Your website name goes here.
    server_name example.com;

    ## Your only path reference.
    root /var/www/example.com/public_html;

    ## This should be in your http block and if it is, it's not needed here.
    index index.html;

    autoindex off;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        if (!-e $request_filename){
            rewrite ^(.*)$ /index.html break;
        }
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

第一个和第二个location规则适用于不需要任何特殊检查的常见文件,并经常从机器人和浏览器中请求。

第三条规则说,如果请求的文件(相对网址)不存在,则会提供index.html。此文件是SPA的主文件。如果此规则与请求匹配,则break关键字将停止该过程。

最后一条规则说,如果请求的文件以js,css,png,...(您的静态资产)结尾,它将是服务器,没有任何重写。 通过这种方式,您可以将资产放在任何目录中而不会出现麻烦。

P.S。我在我的角应用中也使用了$locationProvider.html5Mode(true);来获得真实的网址,并且它的效果非常好。