Nginx: proxy_pass と URL パラメータおよび特殊文字を使用した URL 書き換え

Nginx: proxy_pass と URL パラメータおよび特殊文字を使用した URL 書き換え

私は、nginx プロキシと書き換え機能に関するすばらしい投稿をすべて研究しましたが、自分の問題の解決策を見つけることができませんでした。そこで、ここにたどり着きました。私は、次のリクエストを処理できる vaadin を使用した Web アプリケーションを作成しました。

http://<server>/#main/search?country=germany&type=songwriter

SEO 最適化のために、http:///songwriter/germany のような「話す」 URL を処理したいです。そこで、Web サーバー内で URL を書き換えるのが解決策だと思いました。しかし、何を試しても、リクエスト内にハッシュタグを配置できず、最終的な解決策を見つけることができませんでした。私が試したことは次のとおりです。

  location  /songwriter/ {
        proxy_set_header Host $host;
        proxy_redirect off;
        # Option 1 - hastag is encoded
        rewrite ^/songwriter/(.+) /#main/suche?land=$1  break;
        proxy_pass http://127.0.0.1:8080; 
 }

トレースで取得した内容は次のとおりです: /%23main/suche land=berlin/。何かヒントはありますか?

答え1

URL フラグメントはクライアント側のみで、サーバーに送信されることはありません。(リテラルは#そこでは許可されていないため、nginx はそれを URL エンコードします。) Web アプリケーションがナビゲーションに URL フラグメントを乱用する場合、それらはクライアント側 (ブラウザー内) のコードでのみ処理できます。この方法で URL フラグメントを使用することは、良い方法とは見なされないことに注意してください。それらを取り除くには、Web アプリケーションを大幅に書き直す必要があるでしょう。

関連情報