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

2019-12-14T20:38:00

今天,老蒋遇到一个网友需要将同网站目录绑定多个域名,且可以实现每个域名的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格式的。

via。https://www.itbulu.com/nginx-twosite-ssl.html

 

[scode type="green"]顺便贴一个nginx配置格式化网站:https://nginxbeautifier.com/home.html [/scode]

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »