Skip to content

MrSyabro/lua_http_server

Repository files navigation

Простой HTTP сервер на Lua

Это простейший WEB сервер написанный на языке Lua.

Возможности

Сервер умеет все, что нужно на один раз.

  • Отдавать файлы по запросу в браузере
  • Исполнять Lua скрипты, а результат отдавать браузеру. Просто создайте файл с расширением .lua в директории программы и введите путь в адресной строке. Файл будет выполнен, а результат отправится в браузер.
  • Налету заменять имя запрашиваемого файла.
  • HTTPS. Режим включается, если указан --sslcert и --sslkey аргументы и установлена luasec библиотека.

Требования

  1. *luasocket
  2. luasec

Инструкция

Удостовертесь, что у вас открыт порт 8080. Он установлен по умолчанию.

Поместите файлы в одну папку с сервером и запустите http_server.lua.

Возможные пргументы:

--host=0.0.0.0      прослушиваемый сервером хост
--port=8080         порт, который будет прослушивать серве
--root=<dir>        путь к корневой папке файлов сервера
--rules=<file>      путь к файлу правил

--sslcert=<file>    путь к файлу ssl сертификата
--sslkey=<file>     путь к файлу ключа от сертификата
--sslca=<file>      путь к файлу корневого сертификата

Все аргументы не обязательны, у некоторых указанные значения - это значения по умолчани.

HTTPS

Сервер поддерживает шифрованное соединение. Что бы добиться работы в таком режиме, нужно указать пути к сертификатам и ключу. Сертификат сервера может содержать и сертификат ЦС, в там случает --sslca можно не указывать.

Для полноценной работы браузера с защищенным сервером, его нужно перенаправлять на нужный порт. Что бы сделать это можно использовать sslrule.lua в качестве аргумента --rules для сервера перенаправляющего HTTP на HTTPS. Этот сервер, соответственно, должен в проде прослушивать 80 порт, а сервер с сертификатами - 443.

Пример запуска сайта с HTTPS. Оба процесса должны быть запущены паралельно:

http_server --root=/var/http/ --rules=/etc/luahttp/rules.lua --port=443 --sslcert=/var/certs/server.pem --sslkey=/var/verts/server.key
http_server --rules=/etc/luahttp/sslrule.lua --port=80

Это запустит 2 сервера, один на 443 порту основной, а второй на 80 для переадресации. По умолчанию в sslrule.lua описано правило переадресации на https://<host>:<port>. Вы можете изменить это.