配置NGinx以提供静态文件和代理传递某些URL

时间:2013-02-28 14:13:33

标签: static nginx config

网站几乎完全包含在一个html文件中。所有其他文件也可能是图像,css或javascripts以及可能的json文件。

server {

    listen 80;
    server_name git.vosnax.ru;

    location / {
        try_files $uri "/index.html";
        root   /home/sybiam/prod/blog;
        index  index.html;
    }
}

这是我目前的配置,但这并不完美。它会将每个请求重定向到index.html,除非文件存在,这是正常的。

  • 由于某些原因,它会删除GET参数。我想保留它们,因为我可以在javascript中使用它们。

现在,我想为网站添加一些持久性。就像使用非常简单的auth从服务器保存和加载jsons一样,它支持GET和POST。这意味着我无法使用JSONP

问题仅在于如何配置nginx以将所有请求转发给我的金字塔Web服务器以及其他所有指向index.html的请求,除非文件存在。

我可能在不同的域上托管服务器以简化操作但我不知道如何处理跨域请求。旧IE上不支持/api/*

编辑: 显然,查询args始终可用,所以它不再是问题。我的javascript在加载时覆盖了路径名并删除了CORS

1 个答案:

答案 0 :(得分:2)

index.html的所有内容除非文件存在,否则try_files中的location /位已经存在

只将/api/*个请求传递给您的其他服务器,您将以下内容添加到服务器块中(作为location / - 块的兄弟):

location /api/ { 
  proxy_pass http://address_of_server_your_passing_to; 
}

如果您想了解有关多个位置块时请求如何匹配的更多信息,请参阅the documentation