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. 前提准备
- 47.88.10.155、103.200.200.203分别部署nginx
- 解析ip分别在域名购买商解析
- ssl证书需要申请个,分别对应两个一级域名和一个二级域名
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 文件如下:
[root@aliyun ~]# 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 | 合法 |
Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器的更多相关文章
- Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
最常见的: 静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent ...
- nginx泛域名解析实现二级域名多域名
利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为html├── bbs└── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径www为主页程序 ...
- 利用nginx泛域名解析配置二级域名和多域名
利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径. bbs为论坛程序源代码路径 www为 ...
- 通过Nginx为网站配置二级域名
目录 配置域名解析 配置Nginx 重启Nginx 补充 需求:服务器上面运行多个项目:实现每个二级域名访问对应项目: 服务器:阿里云服务器:域名:阿里云注册: 配置域名解析 即配置DNS解析.一定要 ...
- 设置apache服务器的访问证书,支持https访问,windows
windows下载安装openssl http://slproweb.com/products/Win32OpenSSL.html windows证书的生成 安装成功后命令行执行 1.私钥,生成的文件 ...
- 域名添加www之后(或域名后加端口)无法访问(阿里云服务器)
当时在阿里云服务器上部署了一个api接口,通过APP调用一直很正常,突然无法访问了,然后测试调查发现,只要在域名前加上www,再通过域名加端口的方式访问的话, 显示的都是 :502 错误:还一直以为是 ...
- nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
前提:安装好nginx,如果已经启动nginx,先停止,命令: ./usr/local/nginx/sbin/nginx -s stop 修改nginx配置 vi /usr/local/nginx/c ...
- nginx 配置多个二级域名
server { server_name domain.com www.domain.com *.domain.com ; set $subdomain ''; if ($host ~* (\b(?! ...
- Nginx + 阿里云SSL + tomcat 实现https访问代理
第一步:阿里云申请云盾证书服务 第二步:下载证书 第三步:修改Nginx配置 1. 证书文件214033834890360.pem,包含两段内容,请不要删除任何一段内容. 2. 如果是证书系统创建的C ...
随机推荐
- vue-router教程二(要素篇之新手入门)
注意,我们将在指南中使用es 2015代码样本.此外,所有示例都将使用VUE的完整版本来使在线模板编译成为可能.请参阅这里的更多细节. 用vue路由器创建单页应用程序是非常简单的.使用vue.js,我 ...
- JavaScript中的函数(一)
javaScript中的函数实际上是对象,每一个函数都是Function类型的实例,和其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也就是一个指向函数对象的指针,也就是函数对象的一个 ...
- 微信开发 api 需要 https 服务器
微信开发 api 需要 https 服务器 先建一个环境,本地的 https 服务器. 以下这篇不错,很完整. https://zhuanlan.zhihu.com/p/23640321
- (转)Inno Setup入门(十三)——Pascal脚本(2)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250933 事件函数(2) function CheckPassw ...
- jmeter 历史版本下载
在官网下载: https://jmeter.apache.org/download_jmeter.cgi 新版本 要从命令行启动 cd 到bin目录下 使用 sh jmeter
- jQuery给控件赋值....
1.jQuery给span取值:$("#id").html(); 2.jQuery给input取值:$("#id").val(); 3.jQuery给texta ...
- 协议栈CheckList
协议?何谓协议?协议是用来干什么的? 与人类活动进行对比即可理解协议,因为我们无时无刻不在执行协议! 举一个典型交互过程: 人类协议(至少说是好的行为方式)要求一方首先进行问候(张三对李四“你好”), ...
- 5月17日上课笔记-js面向对象
二.js面向对象 js创建对象: var 对象名称 = new Object(); person.name = "小明"; //姓名 person.age = 18; person ...
- c++ 搜索二叉树 插入,删除,遍历操作
搜索二叉树是一种具有良好排序和查找性能的二叉树数据结构,包括多种操作,本篇只介绍插入,排序(遍历),和删除操作,重点是删除操作比较复杂,用到的例子也是本人亲自画的 用到的测试图数据例子 第一.构建节点 ...
- SSMS安装英文版后无法修改为中文
SSMS的UI语言和所安装的Visual Studio的语言是相关的,你这种情况应该是第一次安装的时候安装了英文版的visual studio isolated shell,在卸载的时候你没有卸载这个 ...