nginx配置https详细过程
准备工作
需要先准备好你域名对应的证书和私钥,也就是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详细过程的更多相关文章
- Nginx 配置 HTTPS 完整过程(阿里云申请免费版一年ssl证书)
1. nginx 的 ssl 模块安装 查看 nginx 是否安装 http_ssl_module 模块. $ /usr/local/nginx/sbin/nginx -V 如果出现 configur ...
- Nginx配置Https(详细、完整)
Nginx配置Https(详细.完整) 原文链接:请支持原创 前置条件: 在配置https之前请确保下面的步骤已经完成 服务器已经安装nginx并且通过http可以正常访问 不会安装nginx的可以参 ...
- docker安装配置gitlab详细过程
docker安装配置gitlab详细过程 获取镜像 1.方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.方法二如果服务器网路不好或者pull不下 ...
- windwos下nginx 配置https并http强制跳转https
windwos下nginx 配置https并http强制跳转https 一.首先配置证书文件 申请证书文件,这里就不做详细过程了,直接看证书文件结果. 这是两个证书的关键文件 打开ngxin下con ...
- Nginx 配置 HTTPS 服务器
Nginx 配置 HTTPS 服务器 Chrome 浏览器地址栏标志着 HTTPS 的绿色小锁头从心理层面上可以给用户专业安全的心理暗示,本文简单总结一下如何在 Nginx 配置 HTTPS 服务器, ...
- Nginx 配置 Https 免费证书访问
配置HTTPS 现在做博客或者做网站没有 https 已经不行了,就记录一下我在腾讯云配置 https 的过程吧,非常简单,1个小时就可以了. 还涉及到 http 访问自动转发到 https 访问路径 ...
- nginx配置https双向验证(ca机构证书+自签证书)
nginx配置https双向验证 服务端验证(ca机构证书) 客户端验证(服务器自签证书) 本文用的阿里云签发的免费证书实验,下载nginx安装ssl,文件夹有两个文件 这两个文件用于做服务器http ...
- 购买https证书以及nginx配置https
文章来源 运维公会:购买https证书以及nginx配置https 1.https的作用 https的全名是安全超文本传输协议,是在http的基础上增加了ssl加密协议.在信息传输的过程中,信息有可能 ...
- docker安装与配置gitlab详细过程
docker安装与配置gitlab详细过程 1.打开网易镜像中心 https://c.163yun.com/hub#/m/home/ 2.搜索gitlab,获取下载地址.例如:docker pull ...
- Nginx配置Https
1.申请证书: https://console.qcloud.com/ssl?utm_source=yingyongbao&utm_medium=ssl&utm_campaign=qc ...
随机推荐
- Study python_03
函数 基本思想---函数是用来重复使用的 def shili(input_): print("我了个去 %s"%input_) shili('你竟然') 当一个函数中即有默认参数, ...
- Mysql学习:4、DML命令(增删改查)及密码修改
1.查询表中所有数据: select * from students; 2.插入数据: insert into students (id,name,email,address) values(1,'张 ...
- 21 forms组件-参数initial&instance应用
简单来讲: 如果你想传入前端的页面中附带值,那么在实例化forms中: form = SecondModelForm(data=request.POST, instance=permission_ob ...
- NGINX+Lua模块编译安装
NGINX+Lua 环境配置 目录 NGINX+Lua 环境配置 一.环境装备 二.解压安装相应的软件 测试Lua环境 上面都是经过安装的一些坑之后安装完成的,下面是安装过程中出现的坑 一.环境装备 ...
- C++ PTA 本题要求实现一个计算m和n之间所有整数的和
6-2 2020mhb_函数_求和 (10分) 本题要求实现一个计算m和n之间所有整数的和(求和时需要将m和n也加入到和中)的函数.注意:如果m<=n则计算m到n的所有整数之和,如果m> ...
- 更多Linux实用命令
更多实用命令 进程相关 当程序运行在系统上时,我们称之为进程(process).想监测这些进程,需要熟悉 ps/top 等命令的用法.ps 命令好比工具中的瑞士军刀,它能输出运行在系统上的所有程序的许 ...
- Linux系统环境下部署jar程序实现后台运行1
[ nohup java -jar xxx.jar --spring.profiles.active=prod > 日志文件名 2>&1 & ]
- Web_Servlet之间请求转发
Servlet2 @WebServlet(urlPatterns = "/aa") public class JspService extends HttpServlet { pr ...
- Lombok和MapStruct冲突
Lombok和MapStruct冲突导致无法生成正确的class文件. lombok自动生成getset等冗余代码. MapStruct对象copy.传统的BeanUtils.copy等利用的反射原理 ...
- 【原创】2022年linux环境下QT6不支持中文输入法解决方案
1.配置环境 export PATH="~/目录/Qt/6.x.x/gcc_64/bin":$PATH export PATH="~/目录/Qt/Tools/Cmake/ ...