Nginx跨云反向代理排错:解密配置参数的“陷阱”

前言:在当今的云计算环境中,跨云平台的应用部署变得越来越常见。为了验证跨云平台反向代理的可行性,我们进行了一次测试。本次测试将后端程序部署在阿里云服务器,同时使用在腾讯云注册的已备案国内域名。我们在腾讯云控制台将域名解析至腾讯云服务器,并在该服务器配置反向代理规则,将前端请求转发至阿里云服务器的后端程序,以此来测试不同云厂商间的网络连通性与反向代理部署流程。然而,在配置Nginx反向代理后,却遇到了域名页面无法正常打开的问题,下面就为大家详细讲述这次的排错过程。

测试流程图

用户请求 → DNS解析(域名) →      腾讯云服务器公网ip ↓                          ↓ Nginx反代                    安全组放行80/443端口 ↓                          ↓ 
转发至阿里云服务器公网ip         阿里云NAT网关/CLB  ↓                          ↓ 
阿里云VPC网络                   端口映射(内网服务器) ↓                          ↓ 
内网服务器端口                  服务器防火墙放行 

流程图详细步骤说明

  1. 用户请求阶段:用户通过浏览器输入已备案的国内域名发起访问请求。
  2. DNS解析阶段:域名解析服务将域名指向腾讯云服务器的公网IP地址。
  3. 流量接入阶段:腾讯云服务器安全组需提前放行80端口(HTTP)和443端口(HTTPS),确保外部请求可接入。
  4. Nginx反向代理处理:在腾讯云服务器上部署Nginx,配置反向代理规则,将前端请求转发至阿里云服务器。
  5. 跨云流量转发:请求通过公网从腾讯云服务器转发至阿里云服务器的公网IP。
  6. 阿里云内网处理:阿里云通过NAT网关或CLB(负载均衡)将公网流量映射至内网服务器。
  7. 内网访问阶段:请求进入阿里云VPC网络,最终到达内网服务器的指定端口,需确保服务器防火墙已放行对应端口。

二、初始Nginx配置文件(故障版本)

# HTTPS 服务配置
server {listen 443 ssl;server_name 你的域名server_tokens off;# SSL/TLS 安全配置ssl_certificate /etc/nginx/你的SSL、TLS 证书;ssl_certificate_key /etc/nginx/你的私钥;ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384";ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# 安全响应头配置add_header X-Frame-Options "SAMEORIGIN";add_header X-Content-Type-Options "nosniff";add_header X-XSS-Protection "1; mode=block";add_header Content-Security-Policy "default-src 'self'";# ========== IP白名单配置 ==========# 允许访问的IP段(示例网段,根据实际需求修改)allow 10.10.10.0/24;       # 内网测试网段allow 180.172.1.0/24;      # 公司办公网段allow 150.16.0.0/12;       # 私有IP范围(可选,根据实际需求)allow 8.8.8.8;             # Google公共DNS(示例单IP)# 云厂商服务器IP(根据实际IP修改)allow 139.199.0.0/16;      # 云厂商IP段示例(非真实段,需替换)# 拒绝其他所有IP访问deny all;# ========== 前端静态文件配置 ==========location / {用户-name 你的静态地址详细路径;index index.html;try_files $uri $uri/ /index.html =404;}# ========== 静态资源缓存配置(统一规则) ==========location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map|json)$ {expires 7d;                      # 缓存7天add_header Cache-Control "public";access_log off;                  # 关闭静态资源日志}#  API 代理location /api {add_header Cache-Control no-store;proxy_pass http://阿里云服务器公网ip:后端程序端口;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Connection "";proxy_connect_timeout 30s;proxy_send_timeout 60s;proxy_read_timeout 60s;proxy_buffer_size 128k;proxy_buffers 4 256k;proxy_busy_buffers_size 256k;}# 错误页面配置error_page 404 /404.html;location = /404.html {用户-name 你的静态地址详细路径;internal;}
}# HTTP 重定向到 HTTPS
server {listen 80;server_name 你的域名server_tokens off;return 301 https://$server_name$request_uri;
}

三、故障现象与初步排查

当执行nginx -s reload重载配置后,出现以下异常现象:

  • 域名页面无法正常加载,但登录流程相关请求(Status Code: 200 OK)显示正常
  • 页面交互逻辑JS文件(Status Code: 200 OK)与视觉样式CSS文件(Status Code: 200 OK)加载正常
  • 业务数据交互的API请求显示异常(直观呈现为页面数据区域变红)

初步排查过程

  1. 排查域名解析有效性

    • 使用nslookupdig工具验证域名解析结果,确认域名是否正确指向腾讯云服务器公网IP(示例:dig yourdomain.com +short
    • 检查腾讯云DNS控制台的解析记录配置,确保A记录指向正确服务器IP且TTL时间已生效
    • 验证域名备案状态是否正常,避免因备案问题导致DNS解析被阻断(通过工信部备案系统查询)
  2. 检查跨云网络连通性

    • 通过ping和telnet工具验证腾讯云与阿里云服务器间的网络可达性,确认公网链路正常
    • 使用traceroute追踪跨云路由路径,排查是否存在中间节点丢包或异常跳转
    • 利用云厂商提供的网络监控工具(如阿里云ARMS、腾讯云APM)实时监测链路延迟与丢包率
  3. 核查架构组件配置

    • 检查阿里云NAT网关/CLB的端口映射规则,确认80/443端口已正确映射至内网服务器
    • 验证阿里云VPC网络路由表配置,确保跨云流量可正常转发至目标服务器
    • 检查腾讯云与阿里云服务器的安全组规则,确认80/443端口已放行且无IP黑白名单限制
  4. 验证后端服务状态

    • 直接访问阿里云服务器的后端程序端口(如curl http://阿里云IP:端口/api),确认服务正常响应
    • 检查后端程序日志,查看是否有因请求格式异常或认证失败导致的拒绝访问记录
    • 通过Postman等工具模拟API请求,验证参数格式与认证令牌的有效性
  5. 分析Nginx错误日志

    • 查看Nginx访问日志(/var/log/nginx/access.log)与错误日志(/var/log/nginx/error.log
    • 重点关注SSL握手阶段的异常记录(如SSL handshaking failed)及代理转发错误(如upstream timed out
    • 通过nginx -t命令检查配置文件语法,确保无标点符号或指令格式错误

四、优化后Nginx配置文件(生效版本一)

# HTTPS 服务配置
server {listen 443 ssl;server_name 你的域名;server_tokens off;
#    add_header Access-Control-Allow-Origin *;# SSL/TLS 安全配置ssl_certificate /etc/nginx/你的SSL、TLS 证书;ssl_certificate_key /etc/nginx/你的私钥;
#    ssl_protocols TLSv1.2 TLSv1.3;
#    ssl_prefer_server_ciphers on;
#    ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384";
#    ssl_session_cache shared:SSL:10m;
#    ssl_session_timeout 10m;
#    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# 安全响应头配置
#    add_header X-Frame-Options "SAMEORIGIN";
#    add_header X-Content-Type-Options "nosniff";
#    add_header X-XSS-Protection "1; mode=block";
#    add_header Content-Security-Policy "default-src 'self'";# ========== IP白名单配置 ==========# 允许访问的IP段(示例网段,根据实际需求修改)allow 10.10.10.0/24;       # 内网测试网段allow 180.172.1.0/24;      # 公司办公网段allow 150.16.0.0/12;       # 私有IP范围(可选,根据实际需求)allow 8.8.8.8;             # Google公共DNS(示例单IP)# 云厂商服务器IP(根据实际IP修改)allow 139.199.0.0/16;      # 云厂商服务器ip段示例(非真实段,需替换)# 拒绝其他所有IP访问deny all;# ========== 前端静态文件配置 ==========location / {用户-name 你的静态地址详细路径;index index.html;try_files $uri $uri/ /index.html =404;}# ========== 静态资源缓存配置(统一规则) ==========
#    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map|json)$ {
#        expires 7d;                      # 缓存7天
#        add_header Cache-Control "public";
#        access_log off;                  # 关闭静态资源日志
#    }#  API 代理location /api {add_header Cache-Control no-store;proxy_pass http://阿里云服务器公网ip:后端程序端口;proxy_http_version 1.1;
#        proxy_set_header Host $host;proxy_set_header Host $server_name;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;
#        proxy_set_header Connection "";
#        proxy_connect_timeout 30s;
#        proxy_send_timeout 60s;
#        proxy_read_timeout 60s;
#        proxy_buffer_size 128k;
#        proxy_buffers 4 256k;
#        proxy_busy_buffers_size 256k;}# 错误页面配置
#    error_page 404 /404.html;
#    location = /404.html {
#       用户-name 你的静态地址详细路径;
#        internal;
#    }
}# HTTP 重定向到 HTTPS
server {listen 80;server_name 你的域名;server_tokens off;return 301 https://$server_name$request_uri;
}

五、Nginx故障排错思路与关键分析

(一)核心排查方向:安全配置与环境兼容性冲突

通过对比前后配置差异,发现注释掉SSL/TLS安全配置、响应头及部分代理参数后服务恢复正常,这表明原始配置中存在与当前跨云环境不兼容的参数,具体分析如下:

1. SSL/TLS配置引发的握手失败问题
  • TLS协议版本兼容性:原始配置同时启用TLSv1.2与TLSv1.3,而部分老旧客户端(如Windows 7自带的IE浏览器)不支持TLSv1.3,强制启用会导致握手协议不匹配
  • 密码套件列表过严ssl_ciphers配置仅包含ECDHE-GCM系列加密算法,可能排除了阿里云服务器实际支持的其他密码套件(如RSA-AES系列)
  • HSTS策略影响Strict-Transport-Security头会强制浏览器仅通过HTTPS访问,若SSL配置存在问题,可能导致请求陷入"HTTPS重定向-SSL握手失败"的循环
2. 安全响应头导致的资源加载阻断
  • X-Frame-Options限制SAMEORIGIN策略禁止页面在非同源的iframe中加载,若前端页面依赖跨源iframe嵌套(如第三方组件),会导致页面部分区域白屏
  • 内容安全策略(CSP)约束default-src 'self'严格限制资源加载来源,会阻止页面加载CDN资源(如Font Awesome图标、Google字体),导致样式异常
3. 静态资源缓存规则引发的解析异常
  • 缓存策略与文件名冲突:若前端静态资源使用带哈希值的文件名(如main.123abc.js),try_files $uri $uri/ /index.html =404规则可能无法正确匹配,注释缓存规则后Nginx使用默认路径解析反而恢复正常
  • 强缓存导致的版本不一致expires 7d会使浏览器长时间缓存旧资源,当后端更新后可能出现页面显示异常
4. 反向代理参数引发的连接超时
  • 超时时间配置矛盾:原始配置中proxy_read_timeout 60s与跨云网络延迟可能不匹配,当阿里云后端服务响应较慢时,会导致代理连接超时
  • 缓冲区配置过优proxy_buffer_size等参数的优化配置可能超出当前网络环境承载能力,导致大文件传输时出现分片错误

(二)分步调试与参数复现方案

建议采用"增量启用"策略重新调试配置,具体步骤如下:

1. SSL/TLS配置分级验证
# 第一阶段:仅启用TLSv1.2(兼容性优先)
ssl_protocols TLSv1.2;
# 简化密码套件(保留主流加密算法)
ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256";
# 暂不启用HSTS(调试阶段)
# add_header Strict-Transport-Security "...";# 第二阶段:验证TLSv1.3兼容性后逐步启用
ssl_protocols TLSv1.2 TLSv1.3;
2. 安全响应头渐进式启用
# 优先启用基础防护头
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";# 确认前端无跨源iframe后启用
add_header X-Frame-Options "SAMEORIGIN";# 最后启用CSP(需详细配置资源白名单)
add_header Content-Security-Policy "default-src 'self'; font-src 'self' cdn.example.com; script-src 'self' 'unsafe-eval'";
3. 静态资源缓存优化策略
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map|json)$ {# 开发阶段使用短缓存(1天)expires 1d;add_header Cache-Control "public, max-age=86400";access_log off;# 增加哈希文件名匹配规则try_files $uri $uri?version=$arg_version /index.html =404;
}
4. 反向代理参数自适应调整
location /api {# 跨云场景适当增加超时时间proxy_connect_timeout 60s;proxy_send_timeout 120s;proxy_read_timeout 120s;# 保持默认缓冲区配置(4*4k),避免过度优化# proxy_buffer_size 16k;# proxy_buffers 4 16k;
}

(三)跨云反向代理部署最佳实践

  1. 网络连通性验证前置

    • 提前通过pingtraceroutetelnet等工具验证跨云服务器间的网络延迟与端口可达性
    • 利用云厂商提供的网络质量监控工具(如阿里云ARMS、腾讯云APM)实时监测链路状态
  2. Nginx配置分层设计

    • 将SSL配置、安全头、代理参数等按功能模块拆分到不同配置文件
    • 使用include指令引入公共配置,便于问题定位与增量调试
  3. 安全策略动态适配

    • 通过map指令根据客户端类型动态调整SSL协议版本(如对iOS设备启用TLSv1.3)
    • 利用Nginx变量$http_user_agent实现响应头的差异化配置
  4. 全链路日志追踪

    • 开启Nginx详细访问日志(log_format包含$upstream_status$upstream_response_time等变量)
    • 结合ELK栈构建日志分析平台,实时监控跨云请求的响应时间与错误率

六、故障排查总结与技术反思

本次跨云反向代理部署故障排查揭示了Nginx配置中"安全强化"与"环境兼容性"的平衡难题:

  1. 配置复杂度与环境差异性:Nginx默认配置在多数场景下已可正常工作,过度优化安全参数可能因云厂商网络环境、客户端类型的差异引发兼容性问题
  2. 分步调试的重要性:每次仅修改1-2个配置参数并重启服务,通过nginx -t语法检查与浏览器F12开发者工具实时监控,可大幅提高排错效率
  3. 安全策略的渐进式部署:生产环境应遵循"基础防护→增强防护→严格防护"的递进策略,避免一次性启用高安全等级配置
  4. 工具链的合理运用
    • 使用sslscan扫描服务器SSL配置兼容性
    • 通过ngx_brotli等模块优化跨云传输效率
    • 借助set-misc-nginx-module实现动态响应头配置

七、优化后Nginx配置文件(生效版本二)

# HTTPS 服务配置
server {listen 443 ssl;server_name 你的域名;server_tokens off;
#    add_header Access-Control-Allow-Origin *;# SSL/TLS 安全配置ssl_certificate /etc/nginx/你的SSL、TLS 证书;ssl_certificate_key /etc/nginx/你的私钥;ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384"; # 根据业务需求以及硬件资源来判断用SHA-384 还是 SHA-256ssl_session_cache shared:SSL:10m;    # 该参数配置多少m,需要根据当前的具体业务来判断,以及需要用nginx -t查询下有没有和其他conf文件有参数冲突ssl_session_timeout 10m;add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;# 安全响应头配置
#    add_header X-Frame-Options "SAMEORIGIN";
#    add_header X-Content-Type-Options "nosniff";
#    add_header X-XSS-Protection "1; mode=block";
#    add_header Content-Security-Policy "default-src 'self'";# ========== IP白名单配置 ==========# 允许访问的IP段(示例网段,根据实际需求修改)allow 10.10.10.0/24;       # 内网测试网段allow 180.172.1.0/24;      # 公司办公网段allow 150.16.0.0/12;       # 私有IP范围(可选,根据实际需求)allow 8.8.8.8;             # Google公共DNS(示例单IP)# 云厂商服务器IP(根据实际IP修改)allow 139.199.0.0/16;      # 云厂商服务器ip段示例(非真实段,需替换)# 拒绝其他所有IP访问deny all;# ========== 前端静态文件配置 ==========location / {用户-name 你的静态地址详细路径;index index.html;try_files $uri $uri/ /index.html =404;}# ========== 静态资源缓存配置(统一规则) ==========
#    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map|json)$ {
#        expires 7d;                      # 缓存7天
#        add_header Cache-Control "public";
#        access_log off;                  # 关闭静态资源日志
#    }#  API 代理location /api {add_header Cache-Control no-store;proxy_pass http://阿里云服务器公网ip:后端程序端口;proxy_http_version 1.1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Connection "";proxy_connect_timeout 30s;proxy_send_timeout 60s;proxy_read_timeout 60s;proxy_buffer_size 128k;proxy_buffers 4 256k;proxy_busy_buffers_size 256k;}# 错误页面配置error_page 404 /404.html;location = /404.html {用户-name 你的静态地址详细路径;internal;}
}# HTTP 重定向到 HTTPS
server {listen 80;server_name 你的域名;server_tokens off;# 允许访问的IP段(示例网段,根据实际需求修改)allow 10.10.10.0/24;       # 内网测试网段allow 180.172.1.0/24;      # 公司办公网段allow 150.16.0.0/12;       # 私有IP范围(可选,根据实际需求)allow 8.8.8.8;             # Google公共DNS(示例单IP)# 云厂商服务器IP(根据实际IP修改)allow 139.199.0.0/16;      # 云厂商服务器ip段示例(非真实段,需替换)# 拒绝其他所有IP访问deny all;return 301 https://$server_name$request_uri;
}

当Nginx安全配置“好心办坏事”:我的静态资源与响应头踩坑实录

八、被“拦截”的网页:安全响应头的“过度保护”

上周给公司管理后台升级Nginx配置时,遇到了一个诡异的问题:加上推荐的安全响应头后,网页直接白屏,控制台狂报“资源被拦截”的错误。仔细一看,问题出在Content-Security-Policy(CSP)头的配置上。

1. CSP的“紧箍咒”:从安全到阻塞的一步之遥

我原本配置的是:

add_header Content-Security-Policy "default-src 'self'";

这个规则的意思是:只允许加载本站资源,禁止任何外部资源。但管理后台用了这些外部依赖:

  • 阿里云OSS的图片资源
  • 腾讯云CDN的字体文件
  • 第三方统计脚本(如百度统计)

当CSP严格限制为'self'时,浏览器会直接拒绝加载这些资源,导致页面样式错乱、功能失效,甚至完全空白。控制台的典型报错是:

Refused to load the script 'https://cdn.example.com/script.js' because it violates the Content Security Policy.
2. X-Frame-Options的“误伤”:嵌套iframe的阻断

另一个被我忽略的响应头是X-Frame-Options: SAMEORIGIN。虽然它能防止点击劫持,但我们的后台系统有一个功能需要在iframe中嵌套子页面(比如报表预览),这个配置会导致iframe内容无法显示,报错:

This page is not allowed to be framed.
解决方案:给安全头“松绑”
  1. 细化CSP规则,允许必要的外部资源:

    add_header Content-Security-Policy "default-src 'self'; img-src 'self' https://oss.aliyuncs.com; font-src 'self' https://cdn.tencentcloud.com; script-src 'self' https://stats.baidu.com";
    

    (规则说明:只放行指定域名的图片、字体、脚本资源)

  2. 根据业务需求调整X-Frame-Options

    • 若无需嵌套iframe,保留SAMEORIGIN
    • 若需要在同域名下嵌套,改为ALLOW-FROM https://your-domain.com
九、静态资源缓存的“陷阱”:缓存规则与业务场景的冲突

解决响应头问题后,我又尝试启用静态资源缓存配置,结果遇到了更奇怪的现象:修改前端代码并部署后,页面仍然显示旧内容,清缓存后才正常——但为什么配置了expires 7d会导致更新失效?

1. 缓存规则的“双刃剑”:高效与滞后的矛盾

原本的配置是:

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map|json)$ {expires 7d;                     add_header Cache-Control "public";access_log off;                  
}

这个配置的初衷是让浏览器缓存静态资源7天,减少重复请求。但问题出在:

  • 我们的前端项目采用“版本号哈希”策略(如app.12345.js),理论上更新后文件名会变,缓存不影响;
  • 但某次部署时,运维误将新文件命名为旧文件名(未带版本号),导致浏览器一直读取7天内的缓存,新代码无法生效。
2. 关闭日志的“副作用”:排查问题时的信息缺失

access_log off;虽然减少了日志量,但当静态资源加载失败时(如404错误),无法通过访问日志快速定位问题。例如:

  • 我曾误将CSS路径从/static/css改为/assets/css,但忘记更新Nginx的root路径,导致CSS加载404;
  • 由于关闭了静态资源日志,我只能通过错误日志(error_log)看到零星报错,排查效率大幅降低。
解决方案:让缓存规则更“智能”
  1. 结合版本号与缓存策略

    • 前端资源强制添加哈希后缀(如app.[hash].js),Nginx配置:
      location ~* \.(js|css)\?v=[0-9a-z]{8}$ {  # 匹配带版本号的资源expires 30d;  # 长期缓存
      }
      location ~* \.(js|css)$ {  # 无版本号的资源(临时调试用)expires 1d;  # 短期缓存
      }
      
  2. 保留关键静态资源日志

    access_log /var/log/nginx/static_error.log;  # 只记录静态资源的错误请求
    
十、总结:Nginx配置的“平衡之道”

这次踩坑让我深刻体会到:安全与性能优化不是“一刀切”,而是需要与业务场景深度结合

  • 安全响应头:先在测试环境逐步启用,用浏览器控制台(F12)的“Security”标签检查CSP拦截情况,按需调整规则;
  • 静态资源缓存:根据资源更新频率设置缓存时间,强制要求前端使用版本号机制,避免“旧缓存覆盖新代码”的问题;
  • 日志策略:至少保留错误日志,方便排查问题,生产环境可通过logrotate工具定期切割日志,兼顾性能与可维护性。

技术没有银弹,唯有理解每一行配置的原理,再结合业务场景打磨,才能让Nginx从“绊脚石”变成“加速器”。
后续在跨云架构部署中,建议先在测试环境完整复现生产配置,通过模拟不同客户端访问场景(如移动设备、老旧浏览器)全面验证兼容性,再逐步推送到生产环境,确保服务稳定性与安全性的平衡。
在这里**加粗样式**插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84949.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

股票账户的管理和交易

中国证券登记结算有限责任公司(简称“中国结算”)确实是负责股票的账户管理(开户、销户)和登记、存管、清算、交收等后台业务的中央机构。它确保了股票所有权的准确记录和交易后资金与证券的最终转移。 而股票的交易业务&#xff…

Arcgis地理配准变换方法说明

零阶多项式 - 将使用零阶多项式来平移数据。 当已对数据进行地理配准但通过微小的平移可以更好的排列数据时,通常使用该多项式。 执行零阶多项式平移只需要一个连接线。相似性多项式 - 将使用一阶变换,尝试保持原始栅格的形状。 RMS 错误会高于其他多项式…

深入理解 C++ volatile 与 atomic:五大用法解析 + 六大高频考点

一、volatile volatile是C中一个非常重要的关键字。volatile关键字告诉编译器,被修饰的变量可能会在程序控制之外被改变,因此编译器不能对该变量的访问进行优化。什么意思呢?现代处理器架构中,有寄存器,L1缓存&#x…

跨主机管理Docker容器化应用的操作与技巧

哈喽,大家好,我是左手python! 环境准备与 Docker 安装 在开始跨主机管理 Docker 容器化应用之前,需要确保所有主机上都安装了 Docker 引擎,并且这些主机之间可以通过 SSH 协议进行通信。本节将详细介绍环境准备和 Doc…

编程实践:sigmastar330 调用IVE图像处理加速

说明:本专栏文章有两种解锁方案 1:付费订阅,畅享所有文章 2:免费获取,点击下方链接,关注,自动获取免费链接 https://free-img.400040.xyz/4/2025/04/29/6810a50b7ac8b.jpg 主题:利用IVE进行图像处理加速 Sigmastar 支持的硬件操作,基本都在:mi_ive.h 文件中,本文…

Nginx+PHP+MySQL安装参考

NginxPHPMySQL安装参考 CentOS7环境 配置CentOS7网络: CentOS(最小安装)默认是不打开网络的 启动网络 vi打开:/etc/sysconfig/network-scripts/ifcfg-ens33 文件 将 “ONBOOT:no”属性修改为:“ONBOOT:yes” 重启网络服务 # sudo service …

JavaScript中的反射魔法:揭秘Reflect对象的核心方法(下)

JavaScript中的Reflect对象:高级方法解析(下) 在JavaScript中,Reflect对象不仅提供了基础的对象操作方法(如get、set等),还包含了许多高级API,用于更精细地控制对象行为。本文将继续…

【数字人开发】Unity+百度智能云平台实现长短文本个性化语音生成功能

一、创建自己的应用 百度智能云控制台网址:https://console.bce.baidu.com/ 1、创建应用 2、获取APIKey和SecretKey 3、Api调试 调试网址:https://console.bce.baidu.com/support/?timestamp1750317430400#/api?productAI&project%E8%AF%AD%E9%…

银河麒麟 | ubuntu 搭建属于自己的邮件服务器

目录 遇权不绝就转root 更新系统 安装 Postfix 配置 Postfix 重启 Postfix 安装 Dovecot 配置 Dovecot 编辑 Dovecot 的 IMAP 配置文件 编辑 Dovecot 的用户认证配置文件 编辑 Dovecot 的服务配置文件 重启 Dovecot 安装发送邮箱功能 发送邮件 测试 遇权不绝就转…

嵌入式通信协议框架的四层架构设计与实现

文章目录 一、硬件抽象层:数据收发的基石1.1 设计要点1.2 代码示例 二、协议管理层:智能路由中枢2.1 设计要点2.2 代码示例 三、协议处理层:协议具体实现3.1 设计要求3.2代码示例3.2.1 协议公共定义3.2.2 协议一设计3.2.3 协议二设计 四、应用…

RA信号处理

ra_snr_gui.m 作用:统计不同信噪比下,五种信号的峰值旁瓣比RA和低高频均值比RM,绘制结果,参考图3.11和3.12 DFCW_RA_SNR.m 作用:产生正交离散频率编码信号,并计算峰值旁瓣比RA和低高频均值比 RM LFM_RA_S…

【go的测试】单测之gomock包与gomonkey包

目录 使用gomock包 1. 安装mockgen 2. 定义接口 3. 生成mock文件 4. 在单测中使用mock的函数 5. gomock 包的使用问题 使用gomonkey包 1. mock 一个包函数 2. mock 一个公有成员函数 3. mock 一个私有成员函数 使用gomock包 1. 安装mockgen go get -u github.com/go…

html实现登录与注册功能案例(不写死且只使用js)

目录 案例需求 实现思路 代码参考 login.html register.html 运行效果 升级思路 案例需求 需要一个登录界面和注册页面实现一个较为完整的登录注册功能 1.登录界面没有登录限制需求(降低难度),实现基本的登录判断需求,弹窗…

PHP is the best language.

PHP很好写。 众所周知Python很好写,Python 也能开发 Web 应用,但和 PHP 相比,在“直接处理网页”这件事上,PHP 更加贴近底层和原生。 想快速搭建原型或者 B 端后台工具,不妨用 PHP Laravel 来搞,真的很香…

Mybatis-Plus 在 getOne() 的时候要加上 .last(“limit 1“)

1.先写结论: 1.为了确保 SQL 查询只返回一条记录(当查询返回多条时会报错->多为代码本身问题)。 2.防止数据库执行全表扫描 3.参考网址:问题记录:MyBatis-Plus 中 ServiceImpl 类的 getOne_mybatis_无他&唯手熟尔-2048…

C语言:二分搜索函数

一、二分搜索基本概念 二分搜索(Binary Search)是一种在有序数组中查找特定元素的高效算法,时间复杂度为O(log n)。 基本特点: 仅适用于有序数组(升序或降序) 每次比较将搜索范围减半 比线性搜索(O(n))…

[前端AI]LangChain.js 和 Next.js LLM构建——协助博客撰写和总结助手

LangChain.js 和 Next.js LLM 后端应用于协助博客撰写和总结领域是一个非常实用的方向!这涉及到理解和处理文本内容,并生成新的、有结构的信息。 根据您之前提供的代码和需求,我们可以在此基础上进行更具针对性的功能规划和技术实现。 博客…

用 GitHub Issues 做任务管理和任务 List,简单好用!

说实话,我平时也是一个人写代码,每次开完会整理任务最麻烦: 一堆事项堆在聊天里、文档里,或者散落在邮件里…… 为了理清这些,我通常会做一份 List,标好优先级,再安排到每日的工作里 虽然这个…

每日算法刷题Day35 6.22:leetcode枚举技巧枚举中间2道题,用时1h

枚举中间 对于三个或者四个变量的问题&#xff0c;枚举中间的变量往往更好算。 为什么&#xff1f;比如问题有三个下标&#xff0c;需要满足 0≤i<j<k<n&#xff0c;对比一下&#xff1a; 枚举 i&#xff0c;后续计算中还需保证 j<k。 枚举 j&#xff0c;那么 i 和…

【教学类-18-06】20250623蒙德里安黑白七款合并WORD(500张、无学号)

背景需要 客户买了蒙德里安黑白格子7种尺寸,但是不需要学号方块,并指定要WORD 设计思路 【教学类-18-05】20241118正方形手工纸(蒙德里安-风格派-红黄蓝黑白)-CSDN博客文章浏览阅读1.3k次,点赞29次,收藏18次。【教学类-18-05】20241118正方形手工纸(蒙德里安-风格派-红…