Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器

1.  规划

域名 解析IP Nginx代理
htpps://www.devcult.com 47.88.10.155  
htpps://auto.devcult.com 47.88.10.155 https://www.automa.com
htpps://www.automa.com 103.200.200.203  

本次实验用了2个一级域名,1个二级域名,2个ip地址;实现功能如上图所示,要求全部使用https,并且一级域名实现自动补全www。

2. 前提准备

  1. 47.88.10.155、103.200.200.203分别部署nginx
  2. 解析ip分别在域名购买商解析
  3. ssl证书需要申请3个,分别对应两个一级域名和一个二级域名

3. Nginx 证书部署

两台主机47.88.10.155、103.200.200.203的nginx配置如下:

nginx启动路径:/usr/local/nginx/sbin/nginx

nginx配置文件路径:/usr/local/nginx/conf/nginx.conf

以47.88.10.155为例说明配置ssl证书:

3.1 进入配置文件编辑:

vim /usr/local/nginx/conf/nginx.conf

3.2 .在http节点下下新增或修改:

http {
  include mime.types;
  default_type application/octet-stream;

  #配置https网站配置文件夹
  include /usr/local/nginx/conf/sites-enabled/*.conf;

  ...

  server  {

    listen 80;

    #http 带www和不带www的入口
    server_name devcult.com www.devcult.com;

    #可选,这里是把所有http请求全部重定向到https
    return 301 https://www.devcult.com$request_uri;

    location / {
      root html;
      index index.html index.htm;
    }
    ...
  }
}

  

3.3 .新增网站ssl配置文件夹和配置文件

mkdir /usr/local/nginx/conf/sites-enabled

3.4 证书安装

3.4.1 devcult.com域名配置ssl

把申请的证书下载到服务器上(此处以腾讯云秘钥格式为例,使用亚洲诚信(TrustAsia)证书,其他类似),里面包含:

证书文件1_devcult.com_bundle.crt 、私钥文件2_devcult.com.key

将域名 www.devcult.com 的证书文件1_devcult.com_bundle.crt 、私钥文件2_devcult.com.key保存到同一个目录,本示例在/usr/local/nginx/conf目录下。
新建Nginx根目录下 conf/sites-enabled/www.devcult.com.conf 文件如下:

[[email protected] ~]# cat /usr/local/nginx/conf/sites-enabled/www.devcult.com.conf
server {
        listen       443 ssl;

     #填写绑定证书的域名
        server_name  devcult.com;

     #跳转www:把https://devcult.con 重定向到 http://www.devcult.com
        return 301 http://www.devcult.com$request_uri;

     #证书名称,需要跟证书文件名一致
        ssl_certificate      1_devcult.com_bundle.crt;
        ssl_certificate_key  2_devcult.com.key;

        ssl_session_cache    shared:SSL:1m;
        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;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }
server {
        listen       443 ssl;

     #填写绑定证书的域名
        server_name  www.devcult.com;

     #证书名称,需要跟证书文件名一致
        ssl_certificate      1_devcult.com_bundle.crt;
        ssl_certificate_key  2_devcult.com.key;

        ssl_session_cache    shared:SSL:1m;
        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;

        location / {
            root   html;
            index  index.html index.htm;
        }
    }

注:这里设置两个server的作用是为了让https://devcult.com 跳转至https://www.devcult.com

配置完成后,先用 sbin/nginx -t 来测试下配置是否有误,正确无误的话,重启nginx。就可以使 https://www.devcult.com 来访问了。

注:

配置文件参数 说明
listen 443 SSL访问端口号为443
ssl on 启用SSL功能
ssl_certificate 证书文件
ssl_certificate_key 私钥文件
ssl_protocols 使用的协议
ssl_ciphers 配置加密套件,写法遵循openssl标准
3.4.2 automa.com域名配置ssl

参考3.4.1

3.4.3 automa.devcult.com域名配置ssl

二级域名 automa.devcult.com 代理跳转 automa.com(或任意IP)配置:

把申请的二级域名证书下载到服务器上(此处以腾讯云秘钥格式为例,使用亚洲诚信(TrustAsia)证书,其他类似),里面包含:

证书文件1_automa.devcult.com_bundle.crt 、私钥文件2_automa.devcult.com.key

将二级域名 automa.devcult.com 的证书文件1_automa.devcult.com_bundle.crt 、私钥文件2_automa.devcult.com.key保存到同一个目录,本示例在/usr/local/nginx/conf目录下。
新建Nginx根目录下 conf/sites-enabled/automa.devcult.com.conf 文件如下:

cat /usr/local/nginx/conf/sites-enabled/automa.devops-cultural.club.conf
server {
        listen       443 ssl;
        server_name  automa.devcult.com;
        server_name_in_redirect off;
        ssl_certificate      1_automa.devcult.com_bundle.crt;
        ssl_certificate_key  2_automa.devcult.com.key;

        ssl_session_cache    shared:SSL:1m;
        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;

        location / {
          tcp_nodelay     on;
          proxy_set_header Host            $host;
          proxy_set_header X-Real-IP       $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass https://www.automa.com;
        }
    }

3.5 使用全站加密,http自动跳转https(可选)

对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
在http的server里增加

rewrite ^(.*) https://$host$1 permanent;

或者

return 301 https://www.devcult.com$request_uri;

这样就可以实现80进来的请求,重定向为https了。详情参考3.2

4.测试

输入地址 跳转地址 证书合法
devcult.com https://www.devcult.com 合法
www.devcult.com 合法
https://devcult.com 合法
https://www.devcult.com 合法
automa.devcult.com
https://automa.devcult.com

实际访问内容为https://www.automa.com

合法
automa.com https://www.automa.com

合法
www.automa.com 合法
https://automa.com 合法
https://www.automa.com 合法
时间: 2024-11-03 22:01:59

Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器的相关文章

Nginx + Frp + Let'sEncrypt 泛域名证书

几个日夜,无数坑. 背景是: 目前有备案的域名只有一个,而这个已经在生产环境采用.所以如果要采用这个域名,将不得不用三级泛域名证书,形如*.dev.aaa.com. 由于首要目的是开发用(微信小程序),后台语言是asp.net core,出于开发方便考虑,Web服务器用Kestrel.(当然,最终解决方案于此无关) 阿里云服务器,CentOS 7.4,域名也在阿里云. 一开始用ngrok但始终不能成功,后改用Frp,确实比ngrok好很多,但依然无法配置成功https访问. 最终,采用Nginx

利用nginx泛域名解析配置二级域名和多域名

利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径 www为主页程序源代码路径 把相应程序放入上面的路径通过 http://www.youdomain.com 访问的就是主页 http://bbs.yourdomain.com 访问的就是论坛 其它二级域名类推. server { listen 80; server_name ~^(?<subdomain>

一级二级域名设置测试txt记录(spf记录)pass

1.什么是SPF? (Sender Policy Framework) 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案. 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回. 2.怎么设置邮箱的SPF? (1).SPF通过域名的TXT记录设置实现. 为提升域名邮箱外送(@xishui139以外的邮箱)邮件的到达成功率,建议给域名设置TXT记录. 下面是xish

Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写

最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 反过来: 带参数的动态地址重定向到静态地址 if ($query_string ~* id=(.*)) { set $id $1; rewrite "^(.*)/article.asp$" $1/article/$id.htm last; } 泛域名解析 view plaincopy

nginx泛域名解析实现二级域名多域名

利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为html├── bbs└── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径www为主页程序源代码路径 把相应程序放入上面的路径通过http://www.youdomain.com 访问的就是主页http://bbs.yourdomain.com 访问的就是论坛其它二级域名类推. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2

【网站部署】解析二级域名并部署网站

开设原因 : 最近在学健身, 上一份工作辞掉后, 在北京找了家私人教练培训学校, 进行为期四个月的健身培训, 这个比在健身房找私教专业多了, 被健身房私人教练坑惨了, 说多了都是泪, 已经培训了将近一个半月, 学习了基础私教, 普拉提, 这在学习康复课程, 之后还有功能性 和 综合格斗, 健美备赛 课程, 准备将学到的东西整理到博客上, 我本人也会将学到的东西分享给大家, 学习完之后继续做 Android 码农; 一. 域名准备 1. 解析二级域名 解析二级域名 : 我是在 阿里云上申请的 阿里

nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)

前提:安装好nginx,如果已经启动nginx,先停止,命令: ./usr/local/nginx/sbin/nginx -s stop 修改nginx配置 vi /usr/local/nginx/conf/nginx.conf 配置好以后的nginx.conf文件内容: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/er

nginx 配置多个二级域名

server { server_name domain.com www.domain.com *.domain.com ; set $subdomain ''; if ($host ~* (\b(?!www\b).+)\.domain.com) { set $subdomain -$1; } root /home/user/www$subdomain/; }

建站笔记1-配置服务器程序,安装Xampp,二级域名,外网可以访问

一.开始 因为是新手入门,选用集成环境会减少很多操作和不必要的麻烦 集成环境有xampp,wamp等 本人用的第一次使用是用的XAMPP集成环境,所以就附上XAMPP的官网 二.下载和解压 我下载的是.run文件,直接运行就可以了,压缩包解压的/opt目录下 附上常用解压的命令的使用方式[转] .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName ——————————————— .gz 解压1:gunzip FileName.g