所有 url 上的 nginx index.html

nginx index.html on all url

我愿意这样做

localhost/ | index.html
localhost/category | index.html
localhost/notes | index.html
localhost/notes/note1 | index.html

我尝试这样做,但无穷无尽的错误阻止了我。 当我尝试使用本地主机时,我看到了它。

在处理“/index.html”时重写或内部重定向循环 - 此错误 500。

server {
        listen       80;
        server_name  localhost;

        root C:/Users/Sergey/Desktop/xxx/angular2do;

        location / {
            if ($request_method = POST) {
                proxy_pass http://localhost:3000;
            } 

            if ($request_method = GET) {
                rewrite ^.*$ /index.html last;
            }

        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        # error_page   500 502 503 504  /50x.html;
        # location = /50x.html {
        #    root   html;
        # }

    }

我知道堆栈有很多关于这个问题的问题,但我曾经是所有这些问题并且总是发现错误。

location 块中使用 rewrite ... last 只会循环重写 /index.html/index.html。您应该改用 rewrite ... break。有关详细信息,请参阅 this document

如果您的应用程序还需要资源(css、js、图像),您可以采用另一种方法,即returns静态文件(如果存在),例如:

server {
    listen       80;
    root C:/Users/Sergey/Desktop/xxx/angular2do;

    location / {
        try_files $uri @other;
    }
    location @other {
        if ($request_method != POST) { rewrite ^ /index.html last; }
        proxy_pass http://localhost:3000;
    }
}