簡體   English   中英

Lua在nginx中的包路徑

[英]Lua's package path in nginx

我現在正在使用nginx在Lua中編程。 我編寫了我的Lua文件並將其放在/usr/local/nginx/lua中的目錄中。 然后在nginx.conf我寫了一個位置,比如

location /lua {
    lua_need_request_body on;
    content_by_lua_file lua/test.lua;
}

當我通過Nginx訪問此位置時,將執行Lua腳本。

在Lua文件中,通常可以包含您自己的Lua模塊,並指示搜索路徑

common_path = '../include/?.lua;'
package.path = common_path .. package.path

在常見的Lua編程中,相對路徑是相對於我的Lua文件。

但是對於nginx,相對路徑是相對於我啟動Nginx的目錄。

比如,我在/usr/local/nginx執行sbin/nginx ,然后在Lua package.path中將是/usr/local/include

如果我在/usr/local/nginx/sbin並執行./nginx ,那么在Lua package.path中將是/usr/local/nginx/include

我認為我啟動nginx服務器的目錄不應該受到限制,但我不知道如何解決這個問題。

您想修改Lua package.path以在您擁有源代碼的目錄中進行搜索。 對你來說,那就是lua/

你可以在http塊中使用lua_package_path指令執行此操作(文檔說你可以將它放在頂層,但是當我嘗試它時它不起作用)。

所以對你來說:

http {
    #the scripts in lua/ need to refer to each other
    #but the server runs in lua/..

    lua_package_path "./lua/?.lua;;";

    ...
}

現在,即使服務器運行一個目錄,您的lua腳本也可以找到對方。

你現在可以使用$ prefix。

例如

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

並像這樣開始你的nginx

nginx -p /opt -c /etc/nginx.conf

然后搜索路徑將是

/opt/lua

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM