問題タブ [nginx-location]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nginx - パスを書き換え、パラメータを転送し、パラメータを追加する方法は?
This SO disucssionreturn
は、コードを使用してURLを書き換えるときにパラメーターを転送するには、これに似ている必要があることを示しています
ここまでは順調ですね。しかし、クエリ文字列に任意の新しいパラメーターを追加するにはどうすればよいでしょうか? たとえばid=1
。
ソリューションは、少なくとも次の 3 つのケースをカバーする必要があります。
- 元のリクエストにはクエリ パラメータがありません
- 元のリクエストにはクエリ パラメータがありますが、追加されるパラメータはありません
- 元のリクエストには、クエリ パラメータがすでに追加されています
nginx - Nginxは特定のディレクトリでphpを実行しません
これは私のnginx構成ファイルです
問題は、php ファイルが api ディレクトリの下で実行されないことです。http://localhost:90/api/v2/initに接続すると、書き換えルールによって呼び出される main.php ファイルのソース コードが返されます。
場所 ~* /api {
}
メインルートの下にtest.phpファイルを作成しましたが、動作するので、その書き換えルールに問題があるはずです。一般的に、/api/v2/entry/23224 のようなすべての API 呼び出しを /api/v2/main.php ファイルに渡す必要があります。
windows - Nginx の場所のルートをオーバーライドできないのはなぜですか (windows)?
Windowsサーバー用のnginxでビデオストリーミングを使用したいです。私はこのnginx設定を持っています:
この構成で最も重要なことは次のとおりです。
リクエストhttp://host:port/!/scorms.ecp/27/TESTC/1/1/images/pravilo2.mp4を送信します。error.log には次のものがあります。
nginx が「D:\video/TESTC/pravilo11.mp4」ではなく「D:\PAPISDK_4_T\nginx-1.10.0/html/TESTC/pravilo11.mp4」を検索しようとする理由がわかりません。「root D:\video;」を使ってみた 同じエラーを受け取りました。また、「root」の代わりに「alias」を使用しようとしましたが、次のエラーが発生しました。
「D:\PAPISDK_4_T\nginx-1.10.0/html/TESTC/pravilo11.mp4」ではなく、次のパス「D:\video/TESTC/pravilo11.mp4」でビデオ ファイルを検索するように Windows の nginx 構成を調整するにはどうすればよいですか?
nginx - nginx proxy_pass は間違ったバックエンドの場所にルーティングします
私は走っています
私が達成しようとしているのは;
- リクエストはhttp://my.frontend.com/goto/mytokenからです
- http://my.backend.com:5202/goto/mytokenで処理してほしい
- 制限は、/goto/ トラフィックのみがバックエンドに転送され、フロントエンド URL に /goto/ がない場合、404 リターン、つまりhttp://my.frontend.comである必要があります。
gotoは静的で、mytokenはリクエストごとに異なります (バックエンドに認識されています)。
このシナリオのサーバー定義は次のとおりです。
しかし、問題は次のとおりです。access.log によると、私の URI /goto/mytoken は正常に構築されているようですが、バックエンドは 404 を返します
xxxx - - [27/May/2016:13:01:56 +0000] "GET /goto/7328372837182382938 HTTP/1.1" 404 69 " http://mywebsite.com/index.html " "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/50.0.2661.102 Safari/537.36"
以下がある場合、つまり場所に /goto/ がない場合、同じシナリオがうまく機能します。
ここでヒントをいただければ幸いです。
ssl - Nginx は、場所 (nginx.conf) でプレースホルダーを使用します
nginx をリバース SSL プロキシとして使用したい。
複数の API を持つリセット サービスがあり、場所の構成にプレース ホルダーがあり、それを proxy_pass で使用したい
どうすればいいですか?
reverse-proxy - nginx 正規表現ロケーション マッチングを使用して、URI を複数のリバース プロキシの異なるポートに動的にマッピングする
nginx を使用して、ファイアウォールの背後にある可能性のある Web アプリへのリバース プロキシを作成しています。私の最初の概念実証では、次のロケーション ブロックを使用して動作を確認しました。
を使用して、Web アプリでリバース トンネルを開きssh -f -N -T -R2222:localhost:443 user@nginx-ip
ます。これは私が好きなように正確に機能します。nginx-ip
ブラウザにmy と入力すると、Web アプリから https トラフィックが取得されますがnginx-ip
、 などによって難読化されています。
数千のポート (上記の場合の 2222 ではなく) を介して、潜在的に数千のリバース トンネルを許可したいと考えています。nginx を読んで、正規表現を使用して、ポート番号を含む URI を動的に使用し、その特定のポートに proxy_pass することを考えました。
つまり、I'd like https://nginx-ip/2222/
toproxy_pass https://localhost:2222;
と I'd like https://nginx-ip/1111/
to proxy_pass https://localhost:1111;
.
私はかなりの数のバリエーションを試しましたが、私が推論できる限り、これがうまくいくはずだと考えました:
そうではありません。ブラウザに 502 Bad Gateway が表示され、エラー ログに次のように表示されます。
2016/05/31 21:02:36 [エラー] 6188#0: *3584 localhost を解決するためのリゾルバーが定義されていません, クライアント: {my-client-ip}, サーバー: localhost, リクエスト: "GET /2222/ HTTP/1.1 "、ホスト: "{nginx-ip}"
127.0.0.1
代わりに使用するlocalhost
と404が返されます。Webページには次のように書かれています
見つかりません 要求された URL /2222/ がこのサーバーで見つかりませんでした。
私が試みていることはnginx構成で可能ですか?
繰り返しますが、nginx Web サーバーを介して多数 (数千) の固有のリバース トンネルを開始できるようにしたいと考えています。私の最初の考えは、プロキシしたい他のWebアプリに基づいてnginxサーバーの発信ポートを変更し、nginxサーバーへのリクエストをURIのポートによって別のポートに割り当てることでした(正規表現経由で抽出) .
php - Nginx 動的リクエスト
にページがありますexample.com/fruit.php
。このページはISSET()
、パラメーターを解析して、ユーザーに何を表示するかを決定するために使用します。たとえば、example.com/fruit.php?name=apple&color=red
. これは簡単に行うことができますが、リクエストは次のようにページに表示されるようにしたいと思います。
パラメータが 2 つしかないことがわかっているので、URL を簡単に解析してページを作成できます。ただし、example.com/fruit
ページ自体がURLを解析できるように、URLの背後にあるすべてのリクエストをfruit.phpに送信するようにnginxを構成するにはどうすればよいですか。これが私のロケーションブロックで試したことです:
これは私にはうまくいきません。私はそれを理解しようとして約 1 日を費やしました。どんな助けでも大歓迎です。