Loki日志收集系统架构
通过Loki+Promtail+Grafana,搭建日志收集系统,可以用于收集Docker日志,nginx日志,kubernetes日志
- 通过Loki存储日志数据
- 通过promtail收集日志,上传到Loki数据源
- 通过Grafana连接Loki数据源,查询展示数据
官方文档地址
通过Loki+Promtail+Grafana,搭建日志收集系统,可以用于收集Docker日志,nginx日志,kubernetes日志
官方文档地址
官方文档: 从源代码构建Nginx
基于源码,定制编译Nginx,提供了关于源码编译Nginx的示例
编译环境
Nginx版本: 1.27.5
操作系统: Ubuntu 18.04
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic 计划
1.php服务相关文件。
2.后端使用php-fpm容器启动
3.前端使用本地nginx代理,或者使用容器nginx代理(可不映射php-fpm端口)
php项目目录
/var/www/example/
Index.php文件在该目录
示例
1.使用本地nginx+容器php-fpm服务部署
2.使用容器nginx+容器php-fpm服务部署
通过 ngx_stream_ssl_preread_module 模块(1.11.5) 实现HTTPS和SSH共用一个端口
根据 $ssl_preread_protocol 变量 判断SSL协议版本,选择上游。使ssh连接到ssh端口,HTTPS连接到https端口
nginx版本必须大于1.15.2,因为 nginx 1.15.2 版本之后新增了一个属性$ssl_preread_protocol,可以让stream区分web ssl/tls和其他协议
流程
1.ssh端口
2.https端口
3.通过stream模块实现四层协议的转发,根据 $ssl_preread_protocol 判断进入ssh还是https端口
sub_filter 属于 ngx_http_sub_module 模块,不是默认构建的,需要通过 --with-http_sub_module 配置参数启用。
配置示例
proxy_set_header Accept-Encoding ''; # 清除请求头中的Accept-Encoding,让后端服务器返回未压缩格式
sub_filter_types *; # 替换所有类型
sub_filter_once off; # 查找所有内容替换,而不是只替换一次
sub_filter 'old_address:8080' 'new_address:8888'; # 示例,将响应中的内容 old_address:8080 替换成 new_address:8888