Nginx 实现多域名证书的 HTTPS 配置:一个 IP 对应多个域名,多个 SSL 证书
一台服务器,两个域名。
首先购买https并获取CA证书。您将收到两个域名的两套证书。
第二步:现在是Nginx和OpenSSL的安装和配置(这里注意,一个IP一般只支持一个SSL证书,所以如果我们想在一个IP上部署多个SSL证书,我们需要使用Nginx有这个支持。TLS SNI,因为标准 OpenSSL 不启用 TLS SNI)。
1)Nginx对多域SSL证书的支持需要OpenSSL库的支持。 OpenSSL库本身不支持此功能,必须重新下载并重新编译。步骤如下:
wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz
tar zxvf ./openssl-0.9.8zh。 tar.gz
2) 下载 Nginx 并配置它
wget
tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix= /usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=../openssl-0.9.8zh
(这里报错:pcre库未找到或zlib未找到,
在CentOS中可以使用yum -y install pcre-devel zlib-devel安装缺少的组件
)
make && make install
3)检查Nginx状态
/usr/local/nginx1.8.0/sbin/nginx -V如果得到以下结果,则表示配置完成:
nginx 版本: nginx/1.8.0
built by gcc 4.1.2 20080704 (Red Hat)
built with OpenSSL 0.9.8zh December 3, 2015
启用 TLS SNI 支持 #您可以看到 TLS SNI -启用支持
配置参数:--prefix=/usr/local/nginx1.8.0 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with - openssl = . ./openssl-0.9.8zh
第三步:
配置Nginx应用服务器
证书放置在Nginx/conf/cert文件夹中
文件如下
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream shop_wechat {
server 127.0.0.1:80;
}
server {
listen 443 ssl;
server_name www.test1.com;
ssl_certificate cert/214257281110004.pem;
ssl_certificate_key cert/214257281110004.key;
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 / {
proxy_pass http://shop_wechat;
}
}
upstream shop_app {
server 127.0.0.1:1098;
}
server {
listen 443 ssl;
server_name app.test2.com;
ssl_certificate cert/214257663690004.pem;
ssl_certificate_key cert/214257663690004.key;
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 / {
proxy_pass http://shop_app;
}
}
}启动Nginx : 错误-
nginx: [emerg] getpwnam(“www”) failed error
错误原因是www用户还没有创建。需要将www用户组和用户www添加到服务器系统中,如下:
#/usr/sbin /groupadd -f www
#/usr/sbin/useradd -g www www
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网