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


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

    依赖库安装

    1. 安装 gcc 环境

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

    2. 安装 pcre

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

    3. 安装 zlib

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

    4. 安装 openssl

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

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

    nginx 源码包安装

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

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

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

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

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

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

    进行源码编译并安装 nginx

    $ make # 编译
    $ make install # 安装
    
    • 1
    • 2

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

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

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

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

    查看 nginx 服务进程

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

    配置双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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    然后设置一下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";
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

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

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

    此时 查看一下nginx的状态

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

    image-20220815182442858

  • 相关阅读:
    [附源码]java毕业设计基于JavaEE的机票预定系统
    9.12 校招 实习 内推 面经
    十七、redux
    Spring MVC简介与概述
    使用Python进行广告点击率预测
    【C语言】插入排序详解
    【TB作品】基于MSP430G2553单片机的超声波测距与报警系统,原理图,PCB
    docker 安装unzip命令
    c++标准库的错误代码
    vmware 桥接模式设置桥接到无线网卡
  • 原文地址:https://blog.csdn.net/w_monster/article/details/126352529