Nginx Web环境同目录绑定多个域名且支持SSL方法

今天,老蒋遇到一个网友需要将同网站目录绑定多个域名,且可以实现每个域名的SSL证书,也就是说都要实现HTTPS加密格式。项目是微擎管理系统,目的是希望给客户的演示域名并非主站的域名,而是临时的测试域名,根据他的说法是希望不要被人知道主域名,这样不容易被人投诉。

但是,辅助和临时域名希望与主站的数据一样。他开始提到是否可以用301方式实现,301肯定不可以实现,因为打开之后还是会跳转到主站的域名。他的主站是有HTTPS加密的,因为根据微信的政策,需要微擎等项目都要SSL证书支持HTTPS才可以运行。所以希望辅助域名也可以用到SSL证书。

开始我想远了,准备将所有数据和数据库信息都用增量备份的形式实现的,虽然可以实现,但是确实比较复杂没有必要。然后想到是否可以直接在Nginx配置文件中添加多个server模块实现。

第一、配置准备工作

1、将备用域名解析到当前主站点域名所在的服务器中。

2、备用域名需要申请自己的SSL证书。当然,如果我们不放心,还是先将服务器重要数据备份。

第二、原始Nginx配置文件

server {
listen 443;
ssl on;
root /www/web/laobuluo_com/public_html;
server_name laobuluo.com www.laobuluo.com;

index index.html index.php index.htm;
ssl_certificate /www/wdlinux/nginx-1.8.1/conf/cert/laobuluo.com.pem;
ssl_certificate_key /www/wdlinux/nginx-1.8.1/conf/cert/laobuluo.com.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 ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri @apache;
}
location @apache {
internal;
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

server {
listen 80;
root /www/web/laobuluo_com/public_html;
server_name laobuluo.com www.laobuluo.com;
index index.html index.php index.htm;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri @apache;
}
location @apache {
internal;
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

这个客户主站的SSL证书也是我帮助配置的,上面就是原有的配置文件。注意域名这里我替换掉了。我们需要根据自己的来配置。

第二、添加多域名配置文件

server {
listen 443;
ssl on;
root /www/web/itbulu_com/public_html;
server_name itbulu.com www.itbulu.com;

index index.html index.php index.htm;
ssl_certificate /www/wdlinux/nginx-1.8.1/conf/cert/itbulu.com.pem;
ssl_certificate_key /www/wdlinux/nginx-1.8.1/conf/cert/itbulu.com.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 ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri @apache;
}
location @apache {
internal;
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

这里我们需要添加一个新备用域名的server模块到配置文件中。同时需要将80端口中的server_name配置域名,加上新的域名。

server_name laobuluo.com www.laobuluo.com itbulu.com www.itbulu.com;

最后,重启Nginx可以生效,这时候老蒋去打开新网址和主站老网站都可以打开HTTPS格式的。

本文出处:老蒋部落 » Nginx Web环境同目录绑定多个域名且支持SSL方法 | 欢迎分享( 公众号:站长事儿 )