准备工作

需要先准备好你域名对应的证书和私钥,也就是cert证书和key。我部署是很常见的ng+tomcat双层配置,ng作为前端的代理,所以tomcat就不需要自己处理https,ng作为代理以http协议将请求转给tomcat处理,而后再把tomcat的输出通过SSL加密发给用户。

这种代理模式下,带来的问题就是tomcat会认为所有请求都是ng发出的,你在代码逻辑如果使用request.getScheme()等函数获取的信息会总是http,这种解决办法需要你在转发tomcat的配置一些选项proxy_set_header等信息。

该配置Demo是以客户在华为云上的一台服务器作为样例,免费证书需要通过域名备案后,到云证书管理服务中下载

Nginx

下载nginx自己去官网,可以wget http://nginx.org/download 对应的版本号,自己解压安装后,我们检查下是否有配置SSL模块

$ /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.10.2

如果没有看到configure arguments: --with-http_ssl_module 则需要配置SSL模块,在解压后的nginx目录(注意,不是在安装好的那个nginx目录)执行make编译命令,编译好后,在当前目录下会多出一个objs文件夹。

$ cd nginx-1.10.2
$ make

用新的nginx覆盖当前的安装好的nginx文件

$ cp objs/nginx /usr/local/nginx/sbin/

再次检查安装的模块 /usr/local/nginx/sbin/nginx -v,如果能看到 configure arguments: --with-http_ssl_module 则表示SSL模块已经安装

证书部署

将从华为云上下载的免费证书和秘钥通过sftp工具上传到云服务器上。可以创建一个文件夹cert专门存放,这是我当前存放证书的的路径

nginx.conf配置

在配置前,我们先copy一份原配置文件防止出错。然后在配置文件内新增一个server

server {
     $ 端口号,开启ssl
listen 443 ssl;
     # 域名,多个以空格分开
server_name xxx www.xxx.com; #charset koi8-r; #access_log logs/host.access.log main;
     # 域名证书文件存放位置
ssl_certificate /usr/local/nginx/cert/xxx.crt;
     # 域名私钥存放位置
ssl_certificate_key /usr/local/nginx/cert/xxx.key;
     # 缓存有效期
ssl_session_timeout 5m;
     # 可选的加密协
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     # 加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
     # https加密套件,
ssl_prefer_server_ciphers on;      #静态文件存放位置
location / {
try_files $uri $uri/ /index.html;
#root html;
#index index.html index.htm;
}
location ~.*\.js$ {
root /usr/local/nginx/html/build;
}
location ~.*\.css$ {
root /usr/local/nginx/html/build;
}
     #tomcat 映射的服务器配置
location ^~/cms-manage/{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}

以上就是在配置文件内新增的server,然后在将原http重定向htps

server {
listen 80;
server_name xxx.com www.xxx.top;
return 301 https://$server_name$request_uri;
}

重启nginx

关闭nginx,把占用的端口释放

$ netstat -lntp

杀掉原进程,重启,最后记得修改防火墙和入站规则,将443端口放开

$ /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 

尝试访问下域名,已可正常访问

nginx配置https详细过程的更多相关文章

  1. Nginx 配置 HTTPS 完整过程(阿里云申请免费版一年ssl证书)

    1. nginx 的 ssl 模块安装 查看 nginx 是否安装 http_ssl_module 模块. $ /usr/local/nginx/sbin/nginx -V 如果出现 configur ...

  2. Nginx配置Https(详细、完整)

    Nginx配置Https(详细.完整) 原文链接:请支持原创 前置条件: 在配置https之前请确保下面的步骤已经完成 服务器已经安装nginx并且通过http可以正常访问 不会安装nginx的可以参 ...

  3. docker安装配置gitlab详细过程

    docker安装配置gitlab详细过程   获取镜像 1.方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.方法二如果服务器网路不好或者pull不下 ...

  4. windwos下nginx 配置https并http强制跳转https

    windwos下nginx  配置https并http强制跳转https 一.首先配置证书文件 申请证书文件,这里就不做详细过程了,直接看证书文件结果. 这是两个证书的关键文件 打开ngxin下con ...

  5. Nginx 配置 HTTPS 服务器

    Nginx 配置 HTTPS 服务器 Chrome 浏览器地址栏标志着 HTTPS 的绿色小锁头从心理层面上可以给用户专业安全的心理暗示,本文简单总结一下如何在 Nginx 配置 HTTPS 服务器, ...

  6. Nginx 配置 Https 免费证书访问

    配置HTTPS 现在做博客或者做网站没有 https 已经不行了,就记录一下我在腾讯云配置 https 的过程吧,非常简单,1个小时就可以了. 还涉及到 http 访问自动转发到 https 访问路径 ...

  7. nginx配置https双向验证(ca机构证书+自签证书)

    nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...

  8. 购买https证书以及nginx配置https

    文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...

  9. docker安装与配置gitlab详细过程

    docker安装与配置gitlab详细过程 1.打开网易镜像中心 https://c.163yun.com/hub#/m/home/ 2.搜索gitlab,获取下载地址.例如:docker pull  ...

  10. Nginx配置Https

    1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...

随机推荐

  1. JS篇(006)-怎样添加、移除、移动、复制、创建和查找节点?

    答案: 1)创建新节点 createDocumentFragment() //创建一个 DOM 片段 createElement() //创建一个具体的元素 createTextNode() //创建 ...

  2. npm config get prefer-offline

    npm config get prefer-offline

  3. 利用matlab求解函数微分

    利用matlab解决求解函数微分 matlab,微分 1. 问题提出 最近在复习高等数学,感觉可以结合 去理解他. 遇到了一个题目: 2. 具体代码 %{ 解决函数微分问题 %} clc; clear ...

  4. 解决通过Eclipse启动Tomcat-Run On Server无法选择Tomcat v7.0的问题

    在eclipse中配置Tomcat并启动右键项目 -> Run As -> Run on Server可能会出现无法选择Tomcat v7.0的现象如下图,不慌菜鸟小编带你解决!1.定位到 ...

  5. mysql设置表名不区分大小写

    1.root登录,修改/etc/my.cnf2.在mysqld下加入:lower_case_table_names=13.重新数据库

  6. Check If Binary Tree Is Completed

    Check if a given binary tree is completed. A complete binary tree is one in which every level of the ...

  7. 第一讲:selenium快速入门

    一.selenium目前住主流的web自动化测试框架: 1.资料丰富 资料丰富       2.测试岗位招聘要求,上板率非常之高       3.支持多语言(iava/ pythan/ go /js) ...

  8. Linux 获取内网IP地址脚本

    IP=$( /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr: ...

  9. 关于DELL服务器风扇远程控制失效

    关于DELL服务器风扇远程ipmitool控制失效 去年12月,公司突然断电,公司有一台DELL 720XD服务器,自从断电之后,使用ipmitool命令行控制风扇速度就失效了,因为之前忙其他的项目, ...

  10. Spring Boot中编写单元测试

    编写单元测试可以帮助开发人员编写高质量的代码,提升代码质量,减少Bug,便于重构.Spring Boot提供了一些实用程序和注解,用来帮助我们测试应用程序,在Spring Boot中开启单元测试只需引 ...