nginx සේවාදායකයේ config ගොනුවක් “nginx -t” පරීක්ෂා කරලා සින්ටැක්ස් වැරදි නැතැයි කියලා දැනගත් පසු, බොහෝ වෙලාවට අපි “හරි” කියලා හිතමු. නමුත් නවීන වෙබ් යෙදුම් වල කුඩා වැරදිත්, උදාහරණként CSP header එකක් බ්රවුසරයට නොයැවීම වගේ, සම්පූර්ණ සේවාදායකය අඩු කරයි.
nginx -t සැබෑවටම කරන වැඩ කුමක්ද? එය config ගොනුව “nginx” එකට ලෝඩ් විය හැකිද, නාමයන් හඳුනාගන්නවාද, පරාමිතීන් ගණන සත්යද, වක්රකෝෂ සම්පූර්ණව වැසී ඇතැයි පරීක්ෂා කරනවා. ඒ වගේම, අගය වර්ගය නිවැරදිද කියලා ටයිප් පරීක්ෂාවක් කරයි. එහි පසු, ඔබේ අරමුණට අනුකූලව ඉල්ලීම් සැකසෙනවාද කියලා බලන්නේ නැත.
මෙම “අඳුරු” අවකාශය තුනක්: සෙමැන්ටික් (semantic) මට්ටම, ආරක්ෂක (security) මට්ටම, රන්ටයිම් (runtime) මට්ටම. සෙමැන්ටික් මට්ටමේදී, config එක ව්යාකරණයෙන් නිවැරදියි, නමුත් nginx ඒක ඔබේ අදහසට වඩා වෙනස් ලෙස කියවයි. උදාහරණként, location තුළ if නියෝගය භාවිතා කිරීම “if is evil” කියලා කියලා තියෙනවා. if නියෝගය rewrite මොඩියුලයේ නියෝගයක්, ඉල්ලීමේ rewrite පියවරේ ක්රියා කරයි, ඒත් location තුළ if එකක් ලියන විට, එය අභ්යන්තර location එකක් ලෙස සැලකේ. කොන්දේසිය සත්ය නම්, nginx ඉල්ලීමේ සම්පූර්ණ context එක අභ්යන්තර location එකට මාරු කරයි.
මෙම මාරුවීමේදී, root, proxy_set_header වගේ බොහෝ නියෝග ඉතිරි වෙයි, නමුත් add_header වගේ array‑ශෛලිය නියෝගයන් පසුපසින් පාරම්පරිකව උරුම නොකරයි. එනිසා, ඔබ “if ($arg_size = large) { add_header X-Size large; }” වගේ කොන්දේසියක් ලියලා, size=large යන query string එකක් ඇතුළත් වෙලා තිබේ නම්, X‑Size header එක යැවෙන්නේ නැත.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ බොහෝ වෙබ් සංවර්ධකයන්, startup ගණ්ඨා, සහ IT සමාගම් nginx භාවිතා කරයි. මෙම සැඟවුණු දෝෂයන් නිසා, ආරක්ෂක header එකක් අඩුවීම, වැරදි alias සැකසුම, හෝ අනිවාර්යයෙන්ම පාරිභෝගිකයන්ට අඩු සේවාවක් ලබාදීම සිදු විය හැකිය. ඒ නිසා, config එකේ සින්ටැක්ස් පරීක්ෂා කිරීම පමණක් නොව, semantic‑level පරීක්ෂාවත්, ප්රායෝගික පරීක්ෂාවත් (curl, Postman) කරන්න වැදගත්.
මෙම අවධාරණය, ශ්රී ලංකාවේ තාක්ෂණික කාර්ය මණ්ඩලයට “nginx -t” පසු, config එක අලුත් කරලා, if, location, add_header, alias වැනි නියෝගයන් පිළිබඳ අවධානයෙන් පරීක්ෂා කරන බවක් මතක් කරයි. එවිට, වෙබ් අඩවි වේගවත්, ආරක්ෂිත, සහ පාරිභෝගික අත්දැකීම් උසස් වේ.
අවසානයේ, nginx -t එක පරීක්ෂා කරලා “syntax ok” කියලා ලැබුනත්, ඔබේ සේවාදායකය “right behavior” දෙනවාද කියලා තවත් පියවරක් ගත යුතුයි. එය නවීන DevOps ක්රමවේදයක්, CI/CD පයිප්ලයින් වල config linting, සහ automated testing එකතු කිරීමෙන් කරගත හැකිය.