当前位置: 首页 > article >正文

【个人开发】nginx域名映射及ssl证书配置踩坑记录

1. 背景

买了个域名,申请了ssl证书,买都买了,不得部署点东西。于是开始一堆踩坑之旅。

2. 踩过的坑

2.1 报错1:域名访问 Invalid Host header

项目是一个简单的vue项目,启动方式如下

npm run serve

但浏览器出现报错:域名访问 Invalid Host header。

问了kimi,提供了解决思路,问题在于项目配置本身,项目需要允许所有主机访问。

一开始尝试的解决方案如下

disableHostCheck: true

但出现报错

ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema.
- options has an unknown property ‘disableHostCheck’. These properties are valid:

原因在于disableHostCheck 在 Webpack 5 中已经被弃用,取而代之的是 allowedHosts 配置。

最后修改vue中的vue.config.js。

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    port: 21021,
    open: true,
    allowedHosts: 'all'
  }
}
)

2.2 报错2: 1899568#0: *6 stat() “/root/text-saver/dist/favicon.ico” failed (13: Permission denied),

由于使用npm run serve 虽然可以把项目启来,但是一些静态资源的访问路径存在问题。一步到位,把项目打成dist文件夹,使用nginx部署。

配置完nginx的conf文件后,访问不了,排查/var/log/nginx/error.log中的日志。

出现如下报错:

1899568#0: *6 stat() “/root/text-saver/dist/favicon.ico” failed (13: Permission denied),

又去问kimi,kimi提示是文件夹权限的问题。按照文件夹的授权思路,授权完还是有问题。因为不管是nginx部署,还是项目部署,都使用root。所以理论上不会有权限问题。

最后发现nginx的进程,所属用户是nginx。网上搜了一下,原因竟然在于nginx身上。

nginx.conf文件中,有一个user,默认写的是nginx,所以启动也是用nginx,所以存在访问权限的问题。

把它调整为root后,即可粗暴解决。
nginx.conf
于是,http访问就正常了,开始配置ssl证书。

2.3 报错3: OpenSSL/1.1.1t: error:1408F10B:SSL routines:ssl3_get_record:wrong version number

按照教程流程配置ssl证书,配置完,网页无法加载。

在这里插入图片描述
报错日志里面也仅仅是一堆乱码,很难描述。error.log

偶然搜到一堆帖子,提供一个分析思路,可以使用curl调用

curl -Iv 'https://xxxxxx.top/' 

在这里插入图片描述于是可以发现问题所在OpenSSL/1.1.1t: error:1408F10B:SSL routines:ssl3_get_record:wrong version number。

但实际上nginx的配置中如下协议都版本都已经加上了。

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';

最后发现是在监听443端口的时候少了个ssl。

server {
    listen 443 ssl;
}

2.4 最后附上nginx的配置文件

# 文件: /etc/nginx/conf.d/default.conf
server {
    listen 80;
    server_name www.xxx.top xxx.top;

    # 重定向所有 HTTP 请求到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    
    server_name www.xxx.top xxx.top;
    # 指定 SSL 证书和私钥文件的路径
    ssl_certificate /ssl/cert.pem;
    ssl_certificate_key /ssl/cert.key;

    # SSL 优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers off;

    location / {
	root /root/text-saver/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }
}

以上,重启,结束。

参考文档
Nginx: stat() failed (13: permission denied)
困扰我两天的问题(nginx配置好ssl证书,https却不能访问)


http://www.kler.cn/a/528556.html

相关文章:

  • 论文阅读(十六):利用线性链条件随机场模型检测阵列比较基因组杂交数据的拷贝数变异
  • TypeScript 运算符
  • Android记事本App设计开发项目实战教程2025最新版Android Studio
  • CNN的各种知识点(一):卷积神经网络CNN通道数的理解!
  • MySQL高可用
  • 洛谷 P10288 [GESP样题 八级] 区间 C++ 完整题解(STL二分法)
  • 模板(Template)
  • 代码随想录刷题day21|(哈希表篇)18.四数之和
  • 【ubuntu】双系统ubuntu下一键切换到Windows
  • Mooncake阅读笔记:深入学习以Cache为中心的调度思想,谱写LLM服务降本增效新篇章
  • 89,[5]攻防世界 web Web_php_include
  • OpenAI o3-mini全面解析:最新免费推理模型重磅发布
  • 【SSM】Spring + SpringMVC + Mybatis
  • Unity开发游戏使用XLua的基础
  • 2024第十五届蓝桥杯网安赛道省赛题目--rc4
  • 水稻和杂草检测数据集VOC+YOLO格式1356张2类别
  • Linux tr 命令使用详解
  • 【题解】AtCoder Beginner Contest ABC391 D Gravity
  • OpenAI承认开源策略错误,考虑调整策略并推出o3-mini模型
  • 攻防世界 simple_php
  • Java基础知识总结(三十九)--流对象
  • 【JavaEE】Spring(4):配置文件
  • 1992-2025年中国计算机发展状况:服务器、电脑端与移动端的演进
  • Effective Objective-C 2.0 读书笔记—— 方法调配(method swizzling)
  • 【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现
  • 2025_2_1 C语言中关于字符串