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

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

依赖库安装

1. 安装 gcc 环境

  • centos
$ sudo yum -y install gcc gcc-c++ # nginx 编译时依赖 gcc 环境
  • ubuntu
$ sudo apt-get install gcc gcc-c++ # nginx 编译时依赖 gcc 环境

2. 安装 pcre

  • centos
$ sudo yum -y install pcre pcre-devel # 让 nginx 支持重写功能
  • ubuntu
$ sudo apt-get install libpcre3 libpcre3-dev  

3. 安装 zlib

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

4. 安装 openssl

  • centos
# 安全套接字层密码库,用于通信加密
$ sudo yum -y install openssl openssl-devel
  • ubuntu
$ sudo apt-get install openssl libssl-dev 

以上安装完成后,进行 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

了迹奇有没

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值