0

nginx.config で次のようにリバース nginx プロキシを実行しています。

http {
  lua_package_path ";;$prefix/?.lua;?.lua;/etc/nginx/?.lua;/etc/nginx/resty/?.lua;";
}

次に、サーバー内の複数の場所:

 # xxx SERVICE
    location ~* ^/articles/?(.*) {

      proxy_ignore_client_abort on;

      include cors.conf;

      access_by_lua_file nginx_v4.lua;}

/etc/nginx/でnginxとlua構成を使用してこのcentos 7を実行しています。これは、luaパッケージパスで指定したものです。nginx を実行すると、lua ファイル (lua_package_path で見つけます) をインポートするのに問題なく動作しますが、何らかの理由で xxx サービスを実行すると、次のように失敗します。

> 2016/10/11 16:37:21 [notice] 19300#0: getrlimit(RLIMIT_NOFILE):
> 1024:4096 2016/10/11 16:37:21 [notice] 19301#0: start worker processes
> 2016/10/11 16:37:21 [notice] 19301#0: start worker process 19303
> 2016/10/11 16:37:25 [error] 19303#0: *1 failed to load external Lua
> file "/usr/share/nginx/nginx_v4.lua": cannot open
> /usr/share/nginx/nginx_v4.lua: No such file or directory, client:
> 10.1.104.135, server: localhost, request: "GET /content/search?filter.search_string=goog HTTP/1.1", host: "x.x.x.x"
> 2016/10/11 16:37:41 [info] 19303#0: *2 client closed connection while
> waiting for request, client: 10.1.104.135, server: 0.0.0.0:443

何らかの理由で、実際には /etc/nginx にある lua ファイルを /usr/share/nginx で検索します: **file "/usr/share/nginx/nginx_v4.lua": cannot open

/usr/share/nginx/nginx_v4.lua: そのようなファイルやディレクトリはありません**

理由はありますか?これは、パスをハードコーディングするまで機能しません。

4

1 に答える 1

3

lua_package_path は、nginx が lua ファイルを探す場所ではなく、lua がライブラリを探す場所です。

「require "nginx_v4"」で「access_by_lua_file」を「access_by_lua」に変更するか、Lua ファイルの場所を変更するか、「-p /path/」起動パラメータを使用して nginx が config を探すパスを変更できます。

于 2016-10-12T08:57:07.667 に答える