From c7110ea1655a2ad73b579b749666ad1cf4d28d7b Mon Sep 17 00:00:00 2001 From: Ceesjan Luiten Date: Tue, 15 Aug 2017 15:50:58 +0200 Subject: [PATCH] Seed Lua's number generator on nginx worker init --- docs/server-config.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/server-config.rst b/docs/server-config.rst index a916956..ae13193 100644 --- a/docs/server-config.rst +++ b/docs/server-config.rst @@ -40,6 +40,24 @@ and add it to server logs using the following snippets: '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' 'request_id=$request_id'; + + init_worker_by_lua_block { + -- Solution that should work on any OS, but might not + -- be random enough: + -- math.randomseed(os.time()) + + -- Solution that should work on Unix-like systems + -- Random number up to 4294967296 (256^4) + local urandom = assert(io.open("/dev/urandom", "rb")) + local seed = urandom:read(4) + urandom:close() + local seed_as_number = 0 + for i = 1, #seed do + seed_as_number = 256 * seed_as_number + seed:byte(i) + end + math.randomseed(seed_as_number) + } + ... }