Nginx не предоставляет функциональности по умолчанию для этого.Вместо этого вы можете использовать lua module для преобразования специальных символов
Шаги:
- Установка lua-пород и html-entity lib
apt-get install luarocks
luarocks install html-entities
html-entites lib преобразует каждый символ в html-сущность.Поэтому вы должны фильтровать символы, которые вам нужны.В этом примере я конвертирую все символы, которые не являются простыми английскими буквами.Создайте файл mymodule.lua
htmlEntities = require('htmlEntities')
local mymodule = {}
function mymodule.convert(string)
return string:gsub("[^a-zA-Z]", function(c) return htmlEntities.encode(c) end)
end
return mymodule
В nginx.conf указать путь lua.Это загрузит все файлы lua в папку path2
http {
lua_package_path "/path1/path2/?.lua;;";
...
, и для использования этого модуля вы можете использовать директивы * _by_lua.Например в локации
set_by_lua $escape "return require('mymodule').convert(ngx.var.name);" $name;