Board logo

标题: [提问] 咨询个问题nginx 多域名多站点使用https的问题 [打印本页]

作者: 小小青年    时间: 2017-6-16 17:34     标题: 咨询个问题nginx 多域名多站点使用https的问题

咨询个问题nginx 多域名多站点使用https的问题 ,
比如,我未使用面板一键安装,而是自己 安装的nginx等软件,怎么样配置,才能使用多域名多站点的,https互不干扰,怎么样配置的,我最近不知道怎么样可以,或者,是不是高版本的nginx就支持的,不需要另外配置的,因为是新手学nginx有问题就问,所以有懂的,帮忙解答一下。谢谢。
作者: wolfone    时间: 2017-8-4 02:54

本帖最后由 wolfone 于 2017-8-4 02:59 编辑

刚好碰到同样的问题,查了一下资料,经测试是可以解决的
1,配置文件nginx/conf/nginx.conf按主机分配,这个你可以参考wdcp的写法
  1. include vhost/*.conf;
复制代码


我理解就是不同的站点,单独一个配置文件

2,不同主机证书配置就在当前主机的配置文件里面来解决
例如我有两个站点a.com和b.com,a.com站点又绑定域名c.com
那么配置文件vhost里面就有 a.com.conf和b.com.conf两个配置文件

3,先来给把所有证书文件上传
因为个人大多用免费证书,所以先假设3个域名申请不同的证书
那么就有6个文件
分别是(文件名自定义,能记住就行)
a.com.key
a.com.pem
b.com.key
b.com.pem
c.com.key
c.com.pem
先来传证书,目录nginx/conf/cert

4,先来给b.com加上ssl
b.com配置文件nginx/conf/vhost/b.com.conf
这里我是照抄的wd自动生成的
只要注意修改目录,站点域名和证书文件名,就ok了
listen 443;是https的端口443
root是站点目录
ssl开头的部分是设置https的
server_name 是这是域名的
  1. server {         listen       443;        root /www/web/b_com/public_html;
  2.         ssl                  on;
  3.         ssl_certificate      cert/b.com.pem;
  4.         ssl_certificate_key  cert/b.com.key;
  5.         ssl_prefer_server_ciphers on;
  6.         ssl_session_timeout 10m;
  7.         ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  8.         ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  9.         server_name b.com www.b.com;
  10.         index  index.html index.php index.htm;
  11.         error_page  400 /errpage/400.html;
  12.         error_page  403 /errpage/403.html;
  13.         error_page  404 /errpage/404.html;
  14.         error_page  503 /errpage/503.html;
  15.         location ~ \.php$ {
  16.                 proxy_pass http://127.0.0.1:88;
  17.                 include naproxy.conf;
  18.         }
  19.         location ~ /\.ht {
  20.                     deny  all;
  21.             }
  22.         location / {
  23.                 try_files $uri @apache;
  24.         }
  25.         location @apache {
  26.                  internal;
  27.                  proxy_pass http://127.0.0.1:88;
  28.                  include naproxy.conf;
  29.         }
  30. }
复制代码




5,看着是完事了,实际上https确实可以访问了,但是80端口没了,所以打开肯定会出404
b.com配置文件nginx/conf/vhost/b.com.conf
再来加一个,加在最顶上,这里我也是照抄的
据我理解
listen是监听端口
root是定义站点目录
server_name 是站点域名
rewrite 就是直接301跳转到https了
后面的其实没有意义,因为我这里删掉后wdcp老是自动生成,我就没动它了


  1. server {
  2.         listen       80;
  3.         root /www/web/b_com/public_html;
  4.         server_name b.com www.b.com;
  5.         rewrite ^(.*)$  https://$host$1 permanent;
  6.         index  index.html index.php index.htm;
  7.         error_page  400 /errpage/400.html;
  8.         error_page  403 /errpage/403.html;
  9.         error_page  404 /errpage/404.html;
  10.         error_page  503 /errpage/503.html;
  11.         location ~ \.php$ {
  12.                 proxy_pass http://127.0.0.1:88;
  13.                 include naproxy.conf;
  14.         }
  15.         location ~ /\.ht {
  16.                 deny  all;
  17.         }
  18.         location / {
  19.                 try_files $uri @apache;
  20.         }
  21.         location @apache {
  22.                  internal;
  23.                  proxy_pass http://127.0.0.1:88;
  24.                  include naproxy.conf;
  25.         }
  26. }
复制代码




6,现在b.com已经实现了https了,轮到a.com了
首先就是重复4和5了先给a.com加上https


7,给站点a.com帮你绑定域名c.com并单独加上https
首先a.com配置文件nginx/conf/vhost/a.com.conf已经有2短server{}了
一段是listen80 一段是listen443


然后先是listen80里面 server_name 里面加上c.com和www.c.com
这里就已经把80端口的c.com域名绑定了


最后再加一个步骤4里面的server {listen 443……}内容完全复制即可,内容照步骤4修改
listen 443;不要动
root 站点目录不要动
ssl开头的部分只需修改指定证书文件的2个名称即可
server_name 是这是域名的膝盖成c.com和www.c.com即可



8,至此结束,重启nginx就搞完了
9,注意:开放防火墙里面开放端口443哦





欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) Powered by Discuz! 7.2