如何为Nginx Proxy Manager配置自定义JSON日志格式?
如何为Nginx Proxy Manager配置自定义JSON日志格式
Nginx Proxy Manager(NPM)的WebUI没有直接配置自定义日志格式的入口,但可以通过自定义全局配置+代理主机单独配置的方式实现,具体步骤如下:
1. 定义全局JSON日志格式
NPM会自动加载data/nginx/custom目录下的配置文件到Nginx的http块中,所以我们需要在这里添加日志格式定义:
- 首先创建
data/nginx/custom目录(如果不存在的话):mkdir -p data/nginx/custom - 在该目录下创建
http.conf文件,写入你的JSON日志格式:log_format json_analytics escape=json '{' '"time_local": "$time_local", ' '"remote_addr": "$remote_addr", ' '"request_uri": "$request_uri", ' '"status": "$status", ' '"http_referer": "$http_referer", ' '"http_user_agent": "$http_user_agent", ' '"server_name": "$server_name", ' '"request_time": "$request_time", ' '"geoip2_data_country_code": "$geoip2_data_country_code", ' '"geoip2_data_country_name": "$geoip2_data_country_name", ' '"geoip2_data_city_name": "$geoip2_data_city_name", ' '"geoip2_data_postal_code": "$geoip2_data_postal_code", ' '"geoip2_data_latitude": "$geoip2_data_latitude", ' '"geoip2_data_longitude": "$geoip2_data_longitude", ' '"geoip2_data_state_name": "$geoip2_data_state_name", ' '"geoip2_data_state_code": "$geoip2_data_state_code"' '}';注意:原配置中的变量名存在笔误,
$httpReferer需改为$http_referer,$httpAgent需改为$http_user_agent,否则Nginx无法识别这些变量。
2. 为代理主机配置使用自定义日志格式
每个代理主机的自动生成配置文件(如proxy_host/1.conf)会被NPM覆盖,必须通过WebUI的自定义配置修改:
- 登录NPM的WebUI,找到目标代理主机并进入编辑页面
- 切换到高级选项卡,在自定义Nginx配置文本框中添加以下内容:
access_log /data/logs/nginx/proxy-host-1-access.log json_analytics; error_log /data/logs/nginx/proxy-host-1-error.log warn;- 可根据需求修改日志文件的路径和命名(比如按代理主机ID区分)
- 若所有代理主机都需要使用该格式,重复此步骤为每个主机添加配置
3. 重启Nginx Proxy Manager使配置生效
如果是Docker部署,执行以下命令重启容器:
docker restart nginx-proxy-manager
注意事项
- 确保Nginx Proxy Manager已安装
geoip2模块,若未安装,需使用包含该模块的自定义镜像(Docker部署)或手动安装模块(非Docker部署) - 日志文件所在目录需提前创建,否则Nginx会报错:
mkdir -p /data/logs/nginx
内容的提问来源于stack exchange,提问作者sdasdgssdgas
相关产品推荐
相关产品推荐

