javascript - 設定 - proxy_buffers




nginx:すべてのリクエストを単一のhtmlページに送る (4)

nginxを使用して、私はURLを保持したいが、実際には何があっても同じページを読み込む。 History.getState() urlを使用して、javascriptアプリケーションでリクエストをルーティングします。 それは簡単なことでなければならないようですね?

location / {
    rewrite (.*) base.html break;
}

動作しますが、URLをリダイレクトしますか? 私はまだURLが必要です、私はちょうど常に同じページを使用したいです。


try_filesだけを使用しても動作しませんでした。ログに書き換えや内部リダイレクションサイクルエラーが発生しました。

Nginxのドキュメントには、

http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files

だから私は次のように使い終わった。

root /var/www/mysite;

location / {
    try_files $uri /base.html;
}

location = /base.html {
    expires 30s;
}

これは私のために働いた:

location / {
    alias /path/to/my/indexfile/;
    try_files $uri /index.html;
}

これにより、javascriptのシングルページアプリケーションのキャッチオールURLを作成することができました。 npm run buildによってnpm run buildされたcss、fonts、javascriptなどのすべての静的ファイルは、 index.htmlと同じディレクトリにある場合に検出されます。

静的ファイルが何らかの理由で別のディレクトリにある場合は、次のようなものも必要です。

# Static pages generated by "npm run build"
location ~ ^/css/|^/fonts/|^/semantic/|^/static/ {
    alias /path/to/my/staticfiles/;
}

オリジナルの書き換えはほとんど機能するはずです。 なぜそれがリダイレクトされるのかはわかりませんが、本当に欲しいのはちょうどいいと思います

rewrite ^ /base.html break;

その場所に置くか、サーバーに直接置くことができます。


正しい方法は次のとおりです。

location / {
    rewrite (.*) base.html last;
}

lastを使用すると、nginxは書き換えの結果に従って新しい適切なlocationブロックを見つけることができます。

try_filesもこの問題に対する完全に有効なアプローチです。





history