数据收集-升级Nginx服务器,添加HTTPS过程中遇到的问题

在升级Nginx服务器至1.8.0并启用HTTPS过程中,遇到配置不兼容、日志格式问题及环境一致性挑战。通过检查nginx版本、更新配置文件、解决日志分隔符问题,最终成功升级并确保服务正常运行。此过程强调了对nginx使用理解的重要性、操作规范和环境一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据收集-升级Nginx服务器,添加HTTPS过程中遇到的问题

标签(空格分隔): Blog DevOps


运维同学帮忙给服务器加上ssl的证书后,修改完nginx的conf文件.

在本地测试发送数据,以下js代码放到浏览器下执行
浏览器当前访问页面可以是www域,这样可以确保引用ajax执行

$.ajax({
  url: location.protocol + '//xxx.com/api/collect',
  type: 'POST',
  data: {
    a: 'tony--'
  },
  success: function(res){
    console.log(res)
  }
})

执行后http状态码200,但是到服务器grep查找并未找到对应的信息.

各种查找后,不得其果。尝试在测试打点环境spltest重试,一切配置ok后重启服务,在浏览器端切换域名重新测试,在测试服务器上的确有相应日志产生。

比较奇怪的问题,一番思考后基本锁定应该是环境问题,所以检查了nginx的版本。。

线上nginx版本:
nginx version: nginx/1.0.15
测试环境版本:
nginx version: nginx/1.8.0

这个时候还不能确定Root Cause,只有先尝试升级线上两个节点的Nginx,还好有负载均衡器,可以这样轻松地切换(需要观察那个时段的流量压力,避免撑爆导致数据丢失)

选取其中一台安装1.8.0版本的nginx,因为之前是yum安装的,路径还会保留,balabala。。。这个过程中出现问题也挺多:

  1. 在早期版本中,如nginx/1.0.15,log_format定义在server模块,而在我们使用的这个版本log_format定义在http模块,不兼容
  2. 配置文件copy时候,include的conf文件修改到1.8.0版本路径下的conf文件,而不是yum版本的/etc/nginx/conf.d/*.conf
  3. 日志分隔符为ctl+A,运维操作时直接拷贝是不行的,需要手动输入(具体方式为vim打开-insert模式下-执行ctl+V-执行ctl+A)
  4. 需要确保机器的https配置端口是打开的,在qcloud界面打开,因为这个问题搞死了。。。后来才想起来

配置好后,绑定到测试域名测试成功,线上再次切换并绑定到生产的负载均衡器。

总结下:
问题其实不是很大,但是前后操作两个人3小时+,说起来是花了一点时间的,原因:

  1. 对nginx的使用不够了解,在一些配置及版本更新上不了解
  2. 操作需要规范化,线上操作思路要清晰,提前开端口、引用配置文件等,需要很好的ops sense
  3. 环境的一致性.
### 宝塔面板中Nginx配置教程 #### Nginx-RTMP流媒体服务器配置 对于希望在宝塔面板上搭建Nginx-RTMP流媒体服务的情况,由于该模块与标准Nginx版本存在差异,在安装前需先移除已有的Nginx组件[^1]。此操作确保新安装的Nginx-RTMP能够正常工作而不受原有设置干扰。 #### 自定义404错误页设定 当遇到网站未能正确显示自定义404页面的问题时,这通常涉及到Nginx配置文件内的特定指令缺失或不当。即使站点模板已经包含了`404.php`这样的默认处理脚本,仍可能因Nginx未被指示如何响应不存在路径而失效。通过调整Nginx配置,加入如下所示的相关语句,可以使访问者看到预期中的定制化错误提示: ```nginx error_page 404 /custom_404.html; location = /custom_404.html { internal; } ``` 上述代码片段应放置于对应虚拟主机配置块内部,其中`/custom_404.html`代表实际存放自定义HTML文档的位置[^2]。 #### PHP与Nginx集成环境的手动构建 为了实现PHP应用和服务端渲染网页的功能,除了基本Web服务器外还需要适当配置解释器及其关联库项。具体到Linux平台上的实践案例里提到,可以通过编辑位于`.conf`结尾的配置文件来指定FastCGI处理器位置以及传递给它的参数列表。例如: ```nginx location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } ``` 这段声明告诉Nginx每当接收到以`.php`结尾URL请求时,应该转发至何处寻找负责解析这些动态内容的服务进程,并附带必要的上下文信息以便后者完成任务[^3]。 #### WebSocket协议的支持 为了让基于WebSocket的应用程序顺利运行,特别是那些依赖加密连接(`WSS`)的情形下,必须额外添加几条规则到现有HTTP(S)监听部分之中。特别值得注意的是关于升级握手过程的关键映射关系——即`map`指令的作用在于依据客户端发起请求时携带的信息决定后续通信模式切换与否;同时还要允许跨域资源共享(CORS),从而保障前后端分离架构下的交互顺畅无阻: ```nginx http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name yourdomain.com; location /ws/ { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_pass http://backend_ws_server; } } } ``` 这里展示了怎样利用Nginx作为中介层桥接前端浏览器和后端业务逻辑单元之间的实时数据交换通道[^4]。 #### Django项目的部署实例 最后,在涉及Python Web框架如Django的情况下,则要考虑到更多细节方面的要求。比如数据库迁移、静态资源收集等准备工作完成后,还需借助Gunicorn这类WSGI容器配合Nginx共同提供稳定高效的线上服务能力。整个流程大致分为几个阶段:首先是创建并启动独立的工作线程池等待接收来自外部网络接口的数据包;其次是按照既定策略分发至各个子进程中去执行具体的视图函数调用;最终由顶层代理统一汇总返回结果发送回用户终端设备之上[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值