nginx常见报错及解决acme.sh给Nginx配置SSL证书

问题排查:

nginx -t //检查配置是否正确

只要返回ok就说明配置没问题。
在这里插入图片描述

Nginx报错Failed to restart nginx.service: Unit not found

解决方法:

1、在根目录下执行

vim /etc/init.d/nginx

2、插入以下代码

#!/bin/sh
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/local/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"lockfile=/var/lock/subsys/nginxstart() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}restart() {configtest || return $?stopstart}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo}force_reload() {restart}configtest() {$nginx -t -c $NGINX_CONF_FILE}rh_status() {status $prog}rh_status_q() {rh_status >/dev/null 2>&1}case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2esac

3、使用下面命令进入目录

cd /etc/init.d

4、依次执行下列命令

chmod 755 /etc/init.d/nginx (添加权限)chkconfig --add nginx (设置开机启动,注意add前面是两个短横线-)

5、开启nginx服务并且查看

service nginx start 
//或 
systemctl start nginx.service
//查看运行状态
systemctl status nginx.service

在这里插入图片描述

nginx command is not found

解决:需要给Nginx做一个软连接

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed

报错导致Nginx无法启动,如果你的安装路径是:/usr/local/nginx/sbin/nginx
在启动Nginx时指定nginx.conf的路径

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

使用acme.sh给Nginx配置HTTPS证书

1、执行安装命令

curl  https://get.acme.sh | sh
source ~/.bashrc

设置为自动更新

acme.sh  --upgrade  --auto-upgrade

2、生成证书,命令acme.sh --issue -d 域名

//初次创建
acme.sh --issue -d whyta.cn  --dns dns_dp --server 
https://acme.freessl.cn/v2/DV90/directory/b0xxx...
//重新申请
acme.sh --renew --issue -d whyta.cn  --dns dns_dp --server 
https://acme.freessl.cn/v2/DV90/directory/b0xxx...
//添加通配符二级域名
acme.sh --issue -d whyta.cn *.whyta.cn --dns dns_dp --server 
https://acme.freessl.cn/v2/DV90/directory/b0xxx...

3、copy/安装 证书,将证书保存到nginx路径下

acme.sh --install-cert -d 域名 \
--key-file       域名证书key  \
--fullchain-file 域名证书cert \
--reloadcmd     "nginx -s reload"

例如:

acme.sh --install-cert -d whyta.cn \
--key-file       /usr/local/nginx/cert/whyta.cn.key.pem  \
--fullchain-file /usr/local/nginx/cert/whyta.cn.cert.pem \
--reloadcmd     "nginx -s reload"

以上命令会将证书拷贝复制到 /etc/nginx/cert/目录下,并重启 Nginx 。

4、Nginx添加https配置

修改/usr/local/nginx/conf/conf.d/xxx.cn.conf文件,添加https相关配置,这里的ssl_certificate和ssl_certificate_key,路径是证书的保存路径,需要和acme.sh --install-cert保存一致

//一级域名80和443配置
server {listen 80;listen 443 ssl;server_name www.xxx.cn;ssl_certificate   /usr/local/nginx/cert/xxx.cn.cert.pem;ssl_certificate_key  /usr/local/nginx/cert/xxx.cn.key.pem;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;location / {root    /www;}error_page  401 403 404              /404.html;location = /404.html {root   html;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
//二级域名80和443配置
server {listen       80;listen       443 ssl;server_name  blog.xxx.cn;ssl_certificate      /usr/local/nginx/cert/*.xxx.cn.cert.pem;ssl_certificate_key   /usr/local/nginx/cert/*.xxx.cn.key.pem;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers  on;location / {root  /usr/local/www/web/dist/;index  index.html index.htm;}}

这里的key-file路径对应到Nginx配置的ssl_certificate_key路径,fullchain-file路径对应到Nginx配置的ssl_certificate路径。

5、撤销和强制更新证书

强制更新证书acme.sh --renew -f -d 域名

acme.sh --renew -f -d www.xxx.cn

撤销证书acme.sh --renew -f -d 域名

acme.sh --revoke -d www.xxx.cn

6、查看证书列表

acme.sh --list

7、自动续期

## 60天后自动续期
acme.sh --install-cronjob## 立即执行续期
acme.sh --cron

续期操作会自动化执行:

  • 签发新的证书
  • 复制证书到指定位置(根据之前的命令)
  • 重启服务(根据之前的命令

8、布署双证书(以 nginx 为例:)

  • Nginx在版本1.11以后(包括1.11)才支持部署双证书
  • 证书如果配置不当是不会显示双证书的
  • 双证书配置后,不会同时发送给客户端,根据客户端的支持自动选择
  • ssl_ciphers 属性要加上ECDHE-ECDSA-AES128-GCM-SHA256并放在最前。此属性有其它的支持选项,可自行测试。
  • 配置完成后重启服务。
  • 此参数申请的证书为:ECDSA 256 bits和 RSA 2048 bits,需要其它的可自行修改参数测试
server {listen      443 ssl http2;server_name www.xinac.com;# ECC Certssl_certificate             /etc/letsencrypt/acme.sh/xxx.com/ecc/fullchain.pem;ssl_certificate_key         /etc/letsencrypt/acme.sh/xxx.com/ecc/privkey.pem;# RSA Certssl_certificate             /etc/letsencrypt/acme.sh/xxx.com/rsa/fullchain.pem;ssl_certificate_key         /etc/letsencrypt/acme.sh/xxx.com/rsa/privkey.pem;ssl_session_cache           shared:SSL:10m;ssl_session_timeout         30m;ssl_protocols               TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers   on;ssl_ciphers                 ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;......
}

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

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

相关文章

【网络爬虫】2 初探网络爬虫

爬虫练手 把豆瓣的书评list页爬取下来,并获取其书名,和detail的连接地址 豆瓣的书评list的url地址, start1,2,3,4…是其地址页 https://book.douban.com/top250?start1 f12 观察其html结构 思路 按照找到的list的页面地址: 1.获取list页…

15 Transformer 框架概述

整体框架 机器翻译流程(Transformer) 通过机器翻译来做解释 给一个输入,给出一个输出(输出是输入的翻译的结果) “我是一个学生” --》(通过 Transformer) I am a student 流程 1 编码器和解…

最详细STM32,cubeMX外部中断

这篇文章将详细介绍 cubeMX外部中断的配置,实现过程。 文章目录 前言一、外部中断的基础知识。二、cubeMX 配置外部中断三、自动生成的代码解析四、代码实现。总结 前言 实验开发板:STM32F103C8T6。所需软件:keil5 , cubeMX 。实…

用git stash暂存修改

git stash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后&#x…

openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制

文章目录 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 openGauss学习笔记-105 openGauss 数据库管理-管理用户及权限-默认权限机制 数据库对象创建后,进行对象创建的用户就是该对象的所有者。openGauss安装后的默认情况下&#xff0c…

深度学习推荐系统架构、Sparrow RecSys项目及深度学习基础知识

文章目录 🌟 技术架构:深度学习推荐系统的经典技术架构长啥样?🍊 一、深度学习推荐系统的技术架构🍊 二、基于用户行为的推荐🍊 三、基于多模态数据的推荐🍊 四、基于知识图谱的推荐 &#x1f3…

layui 表格 展开

一、表格嵌套表格&#xff08;手风琴打开&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>设备上下线统计</title><script type"text/javascript" src"../../../l…

使用Vue组件的watch监听-简单计算器

Vue组件的初探 一、浅析 这里做了一个全局的组件vue.component(mycomp,{}) 在<template></template>中写组件&#xff0c;将idcomp1 script中直接template:"#copm1" 其他的部分就是之前所讲的watch来实现简易计算器差不多 <div id"app"&…

C/C++ const相关 常量指针 常指针 常指针常量 顶层底层const

文章目录 前言const限定符初始化const引用指针和const顶层和底层const总结 前言 在看const相关内容的时候&#xff0c;对const的一些概念还存在部分疑惑&#xff0c;容易搞混&#xff0c;尤其是在变量声明这种情况下。 这篇博客就主要写一下const的相关。 const限定符 const主…

如何实现前端实时通信(WebSocket、Socket.io等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

架构案例分析重点

架构案例分析重点 信息系统架构架构图 层次式架构&#xff08;可能考点&#xff09;表现层框架设计中间层架构设计数据访问层数据访问层工厂模式的设计&#xff08;一个考点&#xff09; 物联网三层 云原生架构面向服务架构(SOA)SOA设计模式 嵌入式系统架构鸿蒙操作系统&#x…

[C国演义] 第十六章

第十六章 等差数列的划分最长递增子序列 等差数列的划分 力扣链接 子数组 ⇒ dp[i]的含义: yinums[i] 为结尾的所有子数组中的 等差数列数组最多的个数子数组⇒ 状态转移方程: 根据最后一个元素的构成 初始化: 涉及到 i-1, i-2 ⇒ 所以要初始化dp[0] 和 dp[1] 都初始化为 0…

【ES实战】ES主副分片数据不一致分析

ES主副分片数据不一致分析 文章目录 ES主副分片数据不一致分析问题描述问题重现问题分析修复方案 问题描述 在请求索引中的某一条数据时&#xff0c;时而查询有结果&#xff0c;时而无结果。两种情况交替出现。 问题重现 通过对问题数据的点查&#xff0c;确实重现了该现象 …

hdlbits系列verilog解答(或非门)-07

文章目录 wire线网类型介绍一、问题描述二、verilog源码三、仿真结果 wire线网类型介绍 wire线网类型是verilog的一种数据类型&#xff0c;它是一种单向的物理连线。它可以是输入也可以是输出&#xff0c;它与reg寄存器数据类型不同&#xff0c;它不能存储数据&#xff0c;只能…

性能优化-卡顿优化-tarce抓取及分析

性能优化&#xff08;卡顿分析&#xff09; 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的…

[Leetcode] 0035. 搜索插入位置

35. 搜索插入位置 题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target …

OceanBase自动安装部署演示环境demo

OceanBase自动安装部署 前提条件 官方给出硬件条件需要满足以下要求 本文操作系统为&#xff1a;Red Hat Enterprise Linux 8 64 位 下载链接&#xff1a;https://pan.baidu.com/s/1rZ39xJFhk0HdmC4wEJcxvg 提取码&#xff1a;c01x 下载并安装 all-in-one 安装包 执行如下…

LabVIEW生成和打印条形码

LabVIEW生成和打印条形码 想在LabVIEW中生成条形码然后打印条形码。但是&#xff0c;当尝试使用任何一个打印VI来从LabVIEW打印条形码字体时&#xff0c;打印机中的字体是扭曲的。该如何解决这个问题&#xff1f; 首先&#xff0c;需要条形码字体。如果没有&#xff0c;可以从…

【题解 树形dp 拆位】 树上异或

「KDOI-06-S」树上异或 题目描述 给定一棵包含 n n n 个节点的树&#xff0c;第 i i i 个点有一个点权 x i x_i xi​。 对于树上的 n − 1 n-1 n−1 条边&#xff0c;每条边选择删除或不删除&#xff0c;有 2 n − 1 2^{n-1} 2n−1 种选择是否删除每条边的方案。 对于…

nginx部署vue项目(访问路径加前缀)

nginx部署vue项目(访问路径加前缀) nginx部署vue项目&#xff0c;访问路径加前缀分为两部分&#xff1a; &#xff08;1&#xff09;修改vue项目&#xff1b; &#xff08;2&#xff09;修改nginx配置&#xff1b; vue项目修改 需注意&#xff0c;我这是vue-cli3配置&#x…