基本的に、このnginx.conf
ファイルがあり、index.html
ページフォームからいくつかのパラメーターを受け取ります。これらのパラメーターの1つは$url
と呼ばれ、これを使用して次のことを行います。
proxy_pass $url;
$url
がエンコードされているようで、error.logファイルに次のようなものが表示されるため、操作が失敗します。
[error] 18849#18849: *195088 invalid URL prefix in "http%3A%2F%2Fexample.com"
ただし、次のように操作をハードコーディングすると、次のようになります。
proxy_pass http://example.com;
またはこのように:
set $url_backup http://example.com
proxy_pass $url_backup;
問題なく動作します。
URLの問題を修正するにはどうすればよいですか?ありがとう
基本的に、$ url構文にGETパラメータを使用しているため、HTTPのURLには文字列のエンコードが必須です。そのため、すべての特殊文字がフォームからURLにエスケープされます。
しかし、URLをデコードすることで nginx-lua-module 's ngx-escape-uri を使用してLUAスクリポットで作業を行うことができます。
newstr = ngx.unescape_uri($url)
(URLの取得方法によって異なります)
ソース: https://stackoverflow.com/questions/20282054/how-to-urldecode-a-request-uri-string-in-lua