lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Using Lua 5.2 with wsapi 1.6-1 and wsapi-fcgi 1.6-1 installed via luarocks, I have the following nginx configuration:

    server {
      server_name  localhost;

      location / {
        root   /home/petsagouris/code/wsapitest/;
        index  index.html index.htm run.lua;
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
        root   /usr/share/nginx/html;
      # Lua WSAPI
      # taken from
      location ~ ^(.+\.lua)(.*)$ {
        root html;
        fastcgi_index run.lua;
        fastcgi_split_path_info ^(.+\.lua)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

The launcher script is this:

    #!/usr/bin/env lua
    # filename: run.lua
    local fastcgi = require"wsapi.fastcgi"
    local app = require"app"

and the actual app is this one:

    #!/usr/bin/env wsapi.cgi
    # filename: app.lua
    local coroutine = require "coroutine"
    local M= {}
    _ENV = M
    function run(wsapi_env)
      local headers = { ["Content-type"] = "text/html" }
      local function hello_text()
        coroutine.yield("<p>Hello Wsapi!</p>")
        coroutine.yield("<p>PATH_INFO: " .. wsapi_env.PATH_INFO .. "</p>")
        coroutine.yield("<p>SCRIPT_NAME: " .. wsapi_env.SCRIPT_NAME .. "</p>")
      return 200, headers, coroutine.wrap(hello_text)
    return M

Both of them are executable at the moment (do I just need the `run.lua` to be executable or I have to keep both like that?) and I can get the correct responses from the command line when I go for `$ ./run.lua` or `$ ./app.lua`

When I visit localhost:8080 I get a "502 Bad Gateway" response and the following log line:

    2013/11/19 09:02:51 [error] 31359#0: *26 connect() failed (111: Connection refused) while connecting to upstream, client:, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://", host: "localhost:8080"

I find it really weird that I can get the scripts to work properly via the command line but they don't work when hit from the server. Anyone that can help me out with this?

Note: The exact same question has been posted on and!topic/kepler-project/nmwOR0vWeJ4