Nginx は履歴モードでのページ更新の 404 問題をどのように解決しますか?
事前知識
シングル ページ アプリケーション (SPA - シングル ページ アプリケーション)
最初のページのみをロードしますtime このとき、HTML ページとそのパブリック静的リソースのみが返され、後続のページ ジャンプではサーバーから HTML ファイルがフェッチされません。 (ハッシュと履歴ルーティングは、ページを更新せずにブラウザ URL の変更を実装します)ハッシュ ルーティング
例: www.baidu.com/#/home、元々はハッシュを結合するために使用されます。アンカーポイントはページビューの制御を実現します #以降の値が変化してもページの再リクエストは行われません これは主にウィンドウの onhashchange メソッドによって実現されます。ヒストリー ルーティング
ハッシュ ルーティングと比較した場合、最も直感的な変更点は、ルーティングに # がないことです。window.history オブジェクトで一連のメソッドを呼び出すことにより、ページは更新されません。Jump(pushState, replaceState)。
履歴モードでは、URL が変更されているため、この時点でページを手動で更新すると、ブラウザは新しいページを要求している (新しい HTTP 要求を開始している) と認識します。新しいページは存在しません (バックエンドが構成されていない場合) となり、404 が発生します。
ブラウザに IP またはドメイン名を入力した後に何が起こるかを簡単に説明します (面接の質問のような感じです ????) Enter キーを押すと、ブラウザから送信された http が html をリクエストします。一連の転送とアドレス指定の解析の後、ファイルはターゲット IP が存在するサーバーのポート 80 (デフォルト) で受信されます。この時点で問題が発生します。サーバーの 80 インターフェイスが HTTP リクエストを受信した後、何かを返すには、今回は Nginx が静的リソース プロキシを実行する必要があります そしてどの静的ファイルを返すかをサーバーに指示します
Nginx
一般的なプロジェクトの場合デプロイメントでは、nginx.conf 構成ファイルを処理する必要があります。
このファイルについて知っておくべきことは次のとおりです
.... # http 是指令块,针对http网络传输的一些指令配置 http { #文件扩展名与文件类型映射表 include mime.types; #设置客户端与服务端请求的超时时间 keepalive_timeout 65; # 开启压缩功能,目的:提高传输效率,节省带宽 gzip on server { #监听端口 listen 80; #服务命名,最好就是用这个服务器的域名命名 server_name localhost; #指令块,配置外部访问资源和实际资源的对应关系 location /{ root /usr/blog; #表示静态资源所在的目录 index index.html index.htm; #访问这个路径对应的默认静态资源文件或者网页 } } }
location
Syntax
location [=|~|~*|^~|@] uri { ... } location @name { ... }
=: 完全一致を示します
~: 大文字と小文字を区別する正規一致を示します
~*: 大文字と小文字を区別しない正規一致を示します
^~: URI が正規の文字列で始まることを示します
!~: 大文字と小文字が区別される正規表現の不一致を示します
!~*: 大文字と小文字を区別しない通常の非一致を示します。
- #/: ユニバーサル一致。あらゆるリクエストは # に一致します。 ##共通の一致ルール
# 将所有请求直接转发给服务器的9090端口 location = / { proxy_pass http://127.0.0.1:9090/; } # 目录匹配 location ^~ /static/ { root /webroot/static/; } # 后缀匹配 location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/; } # 将/account/开始的请求转发给Account服务器 location /account/ { proxy_pass http://127.0.0.1:8080/ } # 将/order/开始的请求转发给Order服务器 location /order/ { proxy_pass http://127.0.0.1:9090/ }
root と alias
2 つの違いは、nginx が location の後の URL を解釈する方法です
[root]構文: root path[alias]デフォルト値: root html
設定セクション: http、server、location、if
処理結果: root path + location path
構文: alias pathConfigurationセクション:location
処理結果:Use alias path to replace location pathリフレッシュ後の404の問題を解決# 返回/www/root/html/t/a.html的文件 location ^~ /t/ { root /www/root/html/; } # 返回/www/root/html/new_t/a.html的文件 # 把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。 location ^~ /t/ { alias /www/root/html/new_t/; }ログイン後にコピー上記の知識から、更新後、ブラウザーは現在の URL で HTML ファイルを要求しますが、SPA には HTML ファイルが 1 つしかないため、nginx の対応する場所にコード行を構成する必要があることがわかります。 conf
try_files $uri $uri/ /index.html;順番どおりかどうかを nginx に伝える ファイルが存在するかどうかを確認し、存在しない場合は、index.html ファイルにリダイレクトします。
以上がNginx は履歴モードでのページ更新の 404 問題をどのように解決しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

Docker Containerの起動手順:コンテナ画像を引く:「Docker Pull [Mirror Name]」を実行します。コンテナの作成:「docker create [options] [mirror name] [コマンドとパラメーター]」を使用します。コンテナを起動します:「docker start [container name or id]」を実行します。コンテナのステータスを確認してください:コンテナが「Docker PS」で実行されていることを確認します。

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

NGINXサーバーがダウンすると、次のトラブルシューティング手順を実行できます。NGINXプロセスが実行されていることを確認します。エラーメッセージのエラーログを表示します。 nginx構成の構文を確認します。 nginxには、ファイルにアクセスするために必要な権限があることを確認してください。ファイル記述子をチェックして制限を開いてください。 Nginxが正しいポートで聴いていることを確認してください。 nginxトラフィックを許可するために、ファイアウォールルールを追加します。バックエンドサーバーの可用性を含む逆プロキシ設定を確認します。さらなる支援については、テクニカルサポートにお問い合わせください。
