nginx.conf 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. load_module modules/ndk_http_module.so;
  2. load_module modules/ngx_http_lua_module.so;
  3. load_module modules/ngx_http_lua_upstream_module.so;
  4. events {
  5. worker_connections 1024;
  6. }
  7. env HOSTNAME;
  8. env NODE_NAME;
  9. env POD_NAME;
  10. env POD_NAMESPACE;
  11. env POD_IP;
  12. http {
  13. default_type 'text/plain';
  14. # maximum allowed size of the client request body. By default this is 1m.
  15. # Request with bigger bodies nginx will return error code 413.
  16. # http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
  17. client_max_body_size 10m;
  18. init_by_lua_block {
  19. local template = require("template")
  20. -- template syntax documented here:
  21. -- https://github.com/bungle/lua-resty-template/blob/master/README.md
  22. tmpl = template.compile([[
  23. Hostname: {{os.getenv("HOSTNAME") or "N/A"}}
  24. Pod Information:
  25. {% if os.getenv("POD_NAME") then %}
  26. node name: {{os.getenv("NODE_NAME") or "N/A"}}
  27. pod name: {{os.getenv("POD_NAME") or "N/A"}}
  28. pod namespace: {{os.getenv("POD_NAMESPACE") or "N/A"}}
  29. pod IP: {{os.getenv("POD_IP") or "N/A"}}
  30. {% else %}
  31. -no pod information available-
  32. {% end %}
  33. Server values:
  34. server_version=nginx: {{ngx.var.nginx_version}} - lua: {{ngx.config.ngx_lua_version}}
  35. Request Information:
  36. client_address={{ngx.var.remote_addr}}
  37. method={{ngx.req.get_method()}}
  38. real path={{ngx.var.request_uri}}
  39. query={{ngx.var.query_string or ""}}
  40. request_version={{ngx.req.http_version()}}
  41. request_scheme={{ngx.var.scheme}}
  42. request_uri={{ngx.var.scheme.."://"..ngx.var.host..":"..ngx.var.server_port..ngx.var.request_uri}}
  43. Request Headers:
  44. {% for i, key in ipairs(keys) do %}
  45. {% local val = headers[key] %}
  46. {% if type(val) == "table" then %}
  47. {% for i = 1,#val do %}
  48. {{key}}={{val[i]}}
  49. {% end %}
  50. {% else %}
  51. {{key}}={{val}}
  52. {% end %}
  53. {% end %}
  54. Request Body:
  55. {{ngx.var.request_body or " -no body in request-"}}
  56. ]])
  57. }
  58. server {
  59. # please check the benefits of reuseport https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1
  60. # basically instructs to create an individual listening socket for each worker process (using the SO_REUSEPORT
  61. # socket option), allowing a kernel to distribute incoming connections between worker processes.
  62. listen 8080 default_server reuseport;
  63. listen 8443 default_server ssl http2 reuseport;
  64. ssl_certificate /certs/certificate.crt;
  65. ssl_certificate_key /certs/privateKey.key;
  66. # Replace '_' with your hostname.
  67. server_name _;
  68. # set long keepalive_timeout because some loadbalancer proxies expect the connection
  69. # to remain open for at least ten minutes.
  70. keepalive_timeout 620s;
  71. location / {
  72. lua_need_request_body on;
  73. content_by_lua_block {
  74. ngx.header["Server"] = "echoserver"
  75. local headers = ngx.req.get_headers()
  76. local keys = {}
  77. for key, val in pairs(headers) do
  78. table.insert(keys, key)
  79. end
  80. table.sort(keys)
  81. ngx.say(tmpl({os=os, ngx=ngx, keys=keys, headers=headers}))
  82. }
  83. }
  84. }
  85. }