最近购买了两个域名,目前还没有其他业务场景,就想都解析在一个服务器上,发现原来安装的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

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: