Nginx配置:将Zabbix Web面板指向/zabbix子路径
解决Zabbix Web前端切换到/zabbix子路径的问题
你遇到的核心问题是:只调整Nginx配置不足以让Zabbix完全适配子路径,因为Zabbix自身会生成页面跳转和内部链接,必须同时修改Zabbix的Web配置文件,才能让所有链接都带上/zabbix前缀。以下是完整的解决步骤:
一、修正Nginx配置
替换原有的Nginx server块配置,确保/zabbix路径的请求正确映射到Zabbix文件目录,同时修正PHP-FPM的参数传递:
server { listen 8080; server_name localhost; # 根路径返回403,禁止访问非Zabbix内容 location / { return 403; } # Zabbix核心路径映射 location /zabbix { alias /usr/share/zabbix; index index.php; # 处理静态文件与路由转发 try_files $uri $uri/ /zabbix/index.php?$args; # 禁止访问敏感目录 location ~ /\.ht { deny all; } location ~ /(api\/|conf[^\.]|include|locale) { deny all; return 404; } location /zabbix/vendor { deny all; return 404; } # 静态资源缓存优化 location /zabbix/assets { access_log off; expires 10d; } # 图标文件处理 location = /zabbix/favicon.ico { log_not_found off; alias /usr/share/zabbix/favicon.ico; } # PHP文件解析配置 location ~ /zabbix/[^/]\.php(/|$) { alias /usr/share/zabbix; fastcgi_pass unix:/run/php-fpm/zabbix.sock; fastcgi_split_path_info ^(/zabbix/.+\.php)(/.+)$; fastcgi_index index.php; # 修正PHP脚本路径参数 fastcgi_param DOCUMENT_ROOT /usr/share/zabbix; fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_path_info; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } } }
配置说明:
- 使用
alias将/zabbix路径映射到Zabbix实际文件目录/usr/share/zabbix - 调整
try_files规则,确保路由请求转发到/zabbix/index.php处理 - 修改PHP块的路径匹配逻辑,保证PHP脚本能正确解析
/zabbix前缀的请求
二、修改Zabbix Web配置文件
编辑Zabbix的Web配置文件(通常路径为/etc/zabbix/web/zabbix.conf.php),添加或修改基础路径参数:
// 指定Zabbix Web的子路径前缀 $ZBX_BASEPATH = '/zabbix';
如果配置文件中已存在$ZBX_BASEPATH,直接将其值修改为'/zabbix'即可。这一步是关键,它会让Zabbix生成的所有内部链接、跳转地址都自动带上/zabbix前缀。
三、重启服务生效
- 重启Nginx服务:
systemctl restart nginx
- 重启PHP-FPM服务(根据你的系统版本调整服务名):
systemctl restart php-fpm-zabbix
四、验证效果
- 访问
http://<host>:8080/zabbix,确认登录页面正常加载 - 登录后检查页面跳转和所有内部链接,确认均以
/zabbix为前缀(例如http://<host>:8080/zabbix/index.php) - 访问根路径
http://<host>:8080/,确认返回403禁止访问
内容的提问来源于stack exchange,提问作者katatonic
相关产品推荐
相关产品推荐

