3

サイトは 1 つの html ファイルにほぼ完全に含まれています。他のすべてのファイルは、画像、css、または javascript であり、場合によっては 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内で使用できるので、それらを保持したいと思います。

ここで、サイトに永続性を追加したいと思います。非常に単純な認証を使用してサーバーからjsonを保存およびロードするように、GETおよびPOSTをサポートします。つまり、使えませんJSONP

/api/*問題は、ファイルが存在しない限り、すべてのリクエストをピラミッド Web サーバーに転送し、他のすべてを index.htmlに転送するように nginx を構成する方法についてのみです。

物事を簡単にするために別のドメインでサーバーをホストすることもできますが、クロスドメイン要求を処理する方法がわかりません。CORS古い IE ではサポートされていません。

編集: どうやらクエリ引数は常に利用可能だったので、もう問題ではありません。私のJavaScriptは、ロード時にパス名をオーバーライドし、window.location.search.

4

1 に答える 1

3

ファイルが存在しない限り、 index.html への他のすべては、ブロックに既にあるtry_filesビットですlocation /

リクエストだけを他のサーバーに渡すには/api/*、次をサーバー ブロックに追加します ( location /-block の兄弟として):

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

複数の場所ブロックがある場合にリクエストがどのように一致するかについて詳しく知りたい場合は、ドキュメントを参照してください

于 2013-03-01T22:44:55.130 に答える