96SEO 2026-02-23 11:28 6
但是ngx_http_upstream_check_mod…1

server主动健康检测模块ngx_http_upstream_check_module
使用和源码分析》系列已经分析了ngx_http_upstream_check_module的实现原理并且在借助这个模块的框架实现了一个udp健康检测的新功能。
但是ngx_http_upstream_check_module还缺乏基于https监测上游服务器健康状况的能力始终是一个缺憾因此本文基于《nginx
server主动健康检测模块ngx_http_upstream_check_module
模块的ssl连接源码分析》两篇博文的分析成果来实现一个基于https的上游服务器健康检测的能力。
支持向上游服务器发起https请求功能请求的报文复用原有的http检测的请求报文定义响应的状态码检测复用原有的http检测的响应码的定义支持ssl握手过程中添加sni扩展信息支持ssl握手协议类型的配置支持ssl握手协议加密套件的配置
不支持ssl会话复用会话复用可以降低上游服务器的ssl握手压力不支持ssl证书双向验证不支持服务器端证书有效性验证
由于本次主要是检验https的链接握手流程对一些不是特别关键的ssl握手特性暂时不支持主要是为了简化代码逻辑但是不影响业务流程这样也便于在本文中将整个实现流程进行阐述。
后续可以参照ngx_stream_proxy_module中的实现继续将这些特性进行完善以臻于完美。
objs/ngx_http_upstream_check_module.so;events
application/octet-stream;log_format
$http_x_forwarded_for;access_log
www.test.com\r\n\r\n;check_http_expect_alive
}以上配置文件中的upstream块中定义了一个https的健康检测类型
check_http_send复用了http的定义而check_ssl_server_name是新增的指令用来配置ssl握手设置sni扩展主机host信息。
192.168.0.1:443error.log中的前面两条因为服务器响应403报了错误对应在配置了“check_http_expect_alive
http_3xx;”的情况。
如果配置改成“check_http_expect_alive
则报后面那条上游服务器enable的信息。
证明https的检测功能已经可用了。
配置加密套件格式参考proxy_ssl_cipherscheck_ssl_protocols:
TLSv1.2等格式参考proxy_ssl_protocols。
check_ssl_server_name:
和服务器进行ssl握手时候采用的sni扩展host名字如果不设置并且upstream块中的server是用域名设置的那么默认就采用设置的服务器名字。
check_ssl_verify[on/off]
是否校验服务器的证书有效性。
待后续实现check_ssl_session_reuse:
ngx_http_upstream_check_srv_conf_s
check_keepalive_requests;ngx_check_conf_t
};以上添加的ssl_protocols参数在ngx_http_upstream_check_create_srv_conf函数中需要将其设置为NGX_CONF_UNSET_UINT,避免nginx在解析配置文件的时候出现参数重复的报错。
ngx_string(check_ssl_ciphers),NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,ngx_conf_set_str_slot,NGX_HTTP_SRV_CONF_OFFSET,offsetof(ngx_http_upstream_check_srv_conf_t,
ngx_string(check_ssl_protocols),NGX_HTTP_UPS_CONF|NGX_CONF_1MORE,ngx_conf_set_bitmask_slot,NGX_HTTP_SRV_CONF_OFFSET,offsetof(ngx_http_upstream_check_srv_conf_t,
ssl_protocols),ngx_upstream_check_ssl_protocols
ngx_string(check_ssl_server_name),NGX_HTTP_UPS_CONF|NGX_CONF_FLAG,ngx_conf_set_str_slot,NGX_HTTP_SRV_CONF_OFFSET,offsetof(ngx_http_upstream_check_srv_conf_t,
#endif通过以上配置指令可以将解析到的参数设置到ngx_http_upstream_check_srv_conf_s结构体对应的字段中。
其中ngx_upstream_check_ssl_protocols是一个可选协议的列表定义如下
ngx_upstream_check_ssl_protocols[]
ngx_http_upstream_check_module_ctx
*/ngx_http_upstream_check_init,
*/ngx_http_upstream_check_create_main_conf,/*
*/ngx_http_upstream_check_init_main_conf,
*/ngx_http_upstream_check_create_srv_conf,
*/ngx_http_upstream_check_create_loc_conf,
*/ngx_http_upstream_check_merge_loc_conf
};在以上代码中ngx_http_upstream_check_module_ctx结构体的初始化定义中ngx_http_upstream_check_init_main_conf函数将在配置文件的http块解析完成后进行初始化因此我们通过修改这个函数来实现ssl上下文的初始化即ngx_http_upstream_check_srv_conf_s的ssl指针的初始化。
ssl是一个指向ngx_ssl_t的指针用来对ssl协议的相关参数进行设定并初始化ssl上下文。
以下是ngx_http_upstream_check_init_main_conf函数的代码
ngx_http_upstream_check_init_main_conf(ngx_conf_t
**uscfp;ngx_http_upstream_main_conf_t
ngx_http_conf_get_module_main_conf(cf,
ngx_http_upstream_check_create_fastcgi_request(cf-pool,fastcgi_default_params,sizeof(fastcgi_default_params)
NGX_CONF_ERROR;}fastcgi_default_request.data
b-pos;fastcgi_default_request.len
(ngx_http_upstream_check_init_srv_conf(cf,
ngx_http_upstream_check_init_shm(cf,
(ngx_http_upstream_check_init_srv_conf(cf,
NGX_CONF_ERROR;}}这段代码是对所有配置的http
upstream进行遍历然后对它进行初始化因为我们的ssl上下文信息每个upstream对应一个因此正好在ngx_http_upstream_check_init_srv_conf函数里面可以进行初始化。
在函数ngx_http_upstream_check_init_srv_conf的最后返回前我们添加ssl的初始化代码如下
ngx_http_upstream_check_init_srv_conf(ngx_conf_t
如果ssl_protocols没有设置那么默认开启NGX_SSL_TLSv1,NGX_SSL_TLSv1_1和NGX_SSL_TLSv1_2
NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1|NGX_SSL_TLSv1_1|NGX_SSL_TLSv1_2;}/*
如果没有设置ssl_ciphers那么设置默认值为DEFAULT
{ngx_str_set(ucscf-ssl_ciphers,DEFAULT);}/*
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback