NGINX:変数からの正規表現を使用

シフト

http://enable-cors.org/server_nginx.htmlの設定に基づいて、NGINX仮想ホスト定義にCORSを実装しようとしています私が達成しようとしているのは、vhost定義に変数$ valid_cors_originを割り当ててから、次のようにすべてのCORS検証を処理する別のファイルを含めることです。

location / {
  ...
  $valid_cors_origin = "foobar";
  include cors_handling;
}

私は取り除かきながらlocationenable-cors.orgからの例から環境を。この設定では、以下が機能しcors_handlingます。

if ($http_origin = "${valid_cors_origin}"){
  set $cors "true";
}

Origin: foobarもちろん、リクエストにヘッダーを追加する限り

enable-cors.orgの例では、正規表現を使用して$http_originと照合しています。同じことができるようにしたいので、変数に正規表現を割り当てる必要があります$valid_cors_origin問題は、変数がifステートメントで評価されていないように見えることです。これまでのところ、運が悪かったので、次のことを試しました。

$valid_cors_origin = "/(foo|bar)/";
if ($http_origin *~ $valid_cors_origin){
  set $cors "true";
}

私を残します

[notice] 43797#0: *1 $valid_cors_origin does not match "foobar"

文字列評価を強制しようとしています:

if ($http_origin *~ "${valid_cors_origin}"){
  set $cors "true";
}
[notice] 43797#0: *1 "${valid_cors_origin}" does not match "foobar"

そして、私$valid_cors_originがただに置き換えた他のいくつかのバリエーション/foo/ですが、それは評価されていないようですので、私が何に割り当てても問題ないと思います$valid_cors_origin

これはNGINXでも可能ですか、および/またはこの問題を解決する他のモジュール式の方法はありますか?基本的な要件:vhostファイルから有効なオリジンを完全に管理し、構成cors_handlingを可能な限り一般的に保つことができるようにしたい

更新:私はついに@cnstによって提案されたソリューションをテストする時間ができました、そしてそれはうまくいきます。完全を期すために、ファイルcors_handlingから$ http_originのチェックを削除し、チェックをvhost自体に移動しました。ここで次のことができます。

if ($http_origin ~* (regex|for|my|httporigin)) {
  set $cors "true";
}
include cors_handling;
cnst

比較する必要のある中間変数が必要なのはなぜ$http_originですか?

代わりに、実行中にifディレクティブを直接使用し、必要に応じて、ディレクティブ全体を別のファイルincludeに配置してから、$http_origin評価する場所の代わりに配置することもできます

または、全体がcors_handlingすでに別のファイルにある場合は、見出しをif(と比較して$http_origin)実際のlocation(または全体server)に戻します

あなたは明らかにあなたがやろうとしていることをあなたがやろうとしているのと同じ方法でやることはできませんが、これらの選択肢はかなり十分で合理的であるように思われます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PHP内で正規表現自体の中から正規表現変数を使用する

分類Dev

Scalaで正規表現を使用した文字列から数値への変換

分類Dev

jqの変数から正規表現を渡す

分類Dev

単一の正規表現から複数の変数値を抽出します

分類Dev

正規表現を使用して「変数=値」文字列から値を抽出する

分類Dev

正規表現での変数の使用

分類Dev

楽:正規表現内でトピック変数(「for」から)を使用する

分類Dev

正規表現を使用してBashの文字列から変数を抽出する方法は?

分類Dev

javascriptのキャプチャグループを使用して変数から正規表現を作成します

分類Dev

Python-変数からデータを抽出するための正規表現

分類Dev

javaは正規表現の結果から変数を作成します

分類Dev

文字変数から正規表現の前に単語を取得します

分類Dev

変数および特殊文字からのtcl正規表現

分類Dev

正規表現から変数を取得する

分類Dev

PHPで正規表現から変数を取得する方法は?

分類Dev

文字列から変数文字列を取得する正規表現

分類Dev

SQL関数の変数で正規表現を使用する

分類Dev

正規表現を使用して PHP の文字列から数値を抽出する

分類Dev

正規表現で変数をどのように使用しますか?

分類Dev

2つの変数を使用した正規表現テスト:可能ですか?

分類Dev

変数を使用したJavaの正規表現

分類Dev

Rの正規表現で変数値を使用する

分類Dev

mysql.connectorで正規表現の変数を使用する

分類Dev

foreach内の正規表現間で変数を使用する

分類Dev

javascriptの正規表現で変数を使用する

分類Dev

正規表現を使用した変数の設定

分類Dev

Pythonの正規表現で変数を使用する

分類Dev

正規表現内で変数を使用する際の問題

分類Dev

正規表現:数値文字列をキャメルケースから正規表現に変換します

Related 関連記事

  1. 1

    PHP内で正規表現自体の中から正規表現変数を使用する

  2. 2

    Scalaで正規表現を使用した文字列から数値への変換

  3. 3

    jqの変数から正規表現を渡す

  4. 4

    単一の正規表現から複数の変数値を抽出します

  5. 5

    正規表現を使用して「変数=値」文字列から値を抽出する

  6. 6

    正規表現での変数の使用

  7. 7

    楽:正規表現内でトピック変数(「for」から)を使用する

  8. 8

    正規表現を使用してBashの文字列から変数を抽出する方法は?

  9. 9

    javascriptのキャプチャグループを使用して変数から正規表現を作成します

  10. 10

    Python-変数からデータを抽出するための正規表現

  11. 11

    javaは正規表現の結果から変数を作成します

  12. 12

    文字変数から正規表現の前に単語を取得します

  13. 13

    変数および特殊文字からのtcl正規表現

  14. 14

    正規表現から変数を取得する

  15. 15

    PHPで正規表現から変数を取得する方法は?

  16. 16

    文字列から変数文字列を取得する正規表現

  17. 17

    SQL関数の変数で正規表現を使用する

  18. 18

    正規表現を使用して PHP の文字列から数値を抽出する

  19. 19

    正規表現で変数をどのように使用しますか?

  20. 20

    2つの変数を使用した正規表現テスト:可能ですか?

  21. 21

    変数を使用したJavaの正規表現

  22. 22

    Rの正規表現で変数値を使用する

  23. 23

    mysql.connectorで正規表現の変数を使用する

  24. 24

    foreach内の正規表現間で変数を使用する

  25. 25

    javascriptの正規表現で変数を使用する

  26. 26

    正規表現を使用した変数の設定

  27. 27

    Pythonの正規表現で変数を使用する

  28. 28

    正規表現内で変数を使用する際の問題

  29. 29

    正規表現:数値文字列をキャメルケースから正規表現に変換します

ホットタグ

アーカイブ