手动安装nginx,ssl双证书引入。

news/2024/5/20 11:08:35

最近购买了两个域名,目前还没有其他业务场景,就想都解析在一个服务器上,发现原来安装的nginx ssl版本太低,不能适配两个证书。就对这个进行了研究。

依赖库安装

1. 安装 gcc 环境

$ sudo yum -y install gcc gcc-c++ # nginx 编译时依赖 gcc 环境

2. 安装 pcre

$ sudo yum -y install pcre pcre-devel # 让 nginx 支持重写功能

3. 安装 zlib

# zlib 库提供了很多压缩和解压缩的方式,nginx 使用 zlib 对 http 包内容进行 gzip 压缩
$ sudo yum -y install zlib zlib-devel 

4. 安装 openssl

# 安全套接字层密码库,用于通信加密
$ sudo yum -y install openssl openssl-devel

以上安装完成后,进行 nginx 安装。

nginx 源码包安装

将准备好的 nginx-x.xx.x.tar.gz 包,拷贝至 /usr/local/nginx 目录下(一般习惯在此目录下进行安装)进行解压缩。

源码包下载地址:nginx.org/en/download…

$ sudo tar -zxvf  nginx-1.11.5.tar.gz # 解压缩

在完成解压缩后,进入 nginx-1.11.5 目录进行源码编译安装。

$  cd nginx-1.11.5
$ ./configure --prefix=/usr/local/nginx # 检查平台安装环境# --prefix=/usr/local/nginx  是 nginx 编译安装的目录(推荐),安装完后会在此目录下生成相关文件

如果前面的依赖库都安装成功后,执行 ./configure --prefix=/usr/local/nginx 命令会显示一些环境信息。如果出现错误,一般是依赖库没有安装完成,可按照错误提示信息进行所缺的依赖库安装。

进行源码编译并安装 nginx

$ make # 编译
$ make install # 安装

使用nginx -c的参数指定nginx.conf文件的位置,这个指令在初始化配置的同时也会启动nginx。

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

源码包安装与 yum 安装的 nginx 服务操作命令也不同。

  • 启动服务
$ /usr/local/nginx/sbin/nginx
  • 重新加载服务
$ /usr/local/nginx/sbin/nginx -s reload
  • 停止服务
$ /usr/local/nginx/sbin/nginx -s stop

查看 nginx 服务进程

$ ps -ef | grep nginx # 查看服务进程

配置双ssl访问

进入nginx的安装目录,如上的/usr/local/nginx/nginx-x.x.x/

$ wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
$ tar zxvf openssl-1.0.1e.tar.gz
# 将ssl配置进去
$ ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/nginx/nginx-1.23.1/openssl-1.0.1e --with-openssl-opt="enable-tlsext"
# 重新make编译安装一下nginx
make
make install

然后设置一下nginx.conf

server{#监听443端口listen 443 ssl;#对应的域名,空格分隔域名就可以了server_name laterz.cn; #第一个域名的文件ssl_certificate /opt/ssl/.cn/8256221_laterz.cn.pem;ssl_certificate_key /opt/ssl/.cn/8256221_laterz.cn.key;# 其他配置ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。location / {root   /;index  /;proxy_pass http://127.0.0.1:9091;proxy_set_header Host $host:443;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Via "nginx";}
}
server{#监听443端口listen 443 ssl;#对应的域名,空格分隔域名就可以了server_name whrss.com;# 第二个域名的文件ssl_certificate /opt/ssl/.com/8295683_whrss.com.pem;ssl_certificate_key /opt/ssl/.com/8295683_whrss.com.key;# 其他配置ssl_session_timeout 5m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;ssl_prefer_server_ciphers on;#这是我的主页访问地址,因为使用的是静态的html网页,所以直接使用location就可以完成了。location / {root   /;index  /;proxy_pass http://127.0.0.1:9091;proxy_set_header Host $host:443;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Via "nginx";}
}

配置好conf后,需要再执行一下配置指定

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

此时 查看一下nginx的状态

$ /usr/local/nginx/sbin/nginx -V

image-20220815182442858

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

jenkins流水线部署,项目一键部署到k8s,项目一键部署K8S

预操作 打通jenkins、gitlab凭证, 见下面这篇文章 https://blog.51cto.com/wzlinux/2160109 然后从这里拿到凭证ID 用以在后面的Jenkinsfile中进行配置。 在阿里云,拿到镜像仓库凭证,用于自动上传镜像。 Jenkinsfile 放在项目的根目录…

提交代码触发Jenkins流水线更新

提交哪个构建哪个 或者 某个指定分支提交才构建 jenkins自己的restful接口在权限认证上比较麻烦,所以我选择了Jenkins的插件generic-webhook-trigger 使用下来感觉没有选错 1. 安装jenkins插件generic-webhook-trigger 在系统配置中去安装插件。 2. 在Jenkinsfile…

java 生成grpc调用service

1. 安装protoc 这里以mac为例: brew install automake brew install libtool brew install protobuf检查 protoc --version2. 下载protoc-(java/go/kotlin)插件 到这里下载对应系统的exe文件 https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java…

从言行合一到知行合一

本篇记录突然的随想,偶尔停留 2021年只有两种人在写博客,一种是试图建立受众并从中获利的人,另一种是只想写出想法、而没有任何目标的人。 这两种人的行为都非常好。选择做你喜欢的事,坚持下去,它们最终都可以对他人…