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

2023-10-20 18:28

本文主要是介绍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;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;......
}

这篇关于nginx常见报错及解决acme.sh给Nginx配置SSL证书的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

解决Java异常报错:java.nio.channels.UnresolvedAddressException问题

《解决Java异常报错:java.nio.channels.UnresolvedAddressException问题》:本文主要介绍解决Java异常报错:java.nio.channels.Unr... 目录异常含义可能出现的场景1. 错误的 IP 地址格式2. DNS 解析失败3. 未初始化的地址对象解决

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

正则表达式r前缀使用指南及如何避免常见错误

《正则表达式r前缀使用指南及如何避免常见错误》正则表达式是处理字符串的强大工具,但它常常伴随着转义字符的复杂性,本文将简洁地讲解r的作用、基本原理,以及如何在实际代码中避免常见错误,感兴趣的朋友一... 目录1. 字符串的双重翻译困境2. 为什么需要 r?3. 常见错误和正确用法4. Unicode 转换的

Python报错ModuleNotFoundError的10种解决方案

《Python报错ModuleNotFoundError的10种解决方案》在Python开发中,ModuleNotFoundError是最常见的运行时错误之一,通常由模块路径配置错误、依赖缺失或命名冲... 目录一、常见错误场景与原因分析二、10种解决方案与代码示例1. 检查并安装缺失模块2. 动态添加模块

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin