Nginx反向代理服务,可以代理接收请求,并把请求转发到设置好的其他服务器上。

例如,Nginx服务器为 100.101.102.103,A服务为 100.101.102.104 ,通过Nginx配置文件,可以是Nginx服务器代理接收A服务的请求,然后转发到A服务上。

通过SSL证书配置可以是Nginx具有接收Https的能力,然后通过http转发到A服务上;

或者接收Http请求,通过Nginx配置,强制转成Https请求转发到A服务上。

Nginx可以代理多个服务。

本文使用的是windows系统服务器操作,SSL证书为腾讯云的免费SSL(下文有详细步骤)。

一、安装Nginx

Nginx下载官网地址:http://nginx.org/en/download.html

此次使用的是1.18.0版本。

下载后找位置解压

然后在该目录下运行命令窗口(可以在文件夹地址栏输入cmd进入)

输入nginx.exe回车提示报错

nginx: [emerg] CreateDirectory() "E:\tools\Nginx\nginx-1.18.0/temp/client_body_temp" failed (3: The system cannot find the path specified)

原因是没有在nginx目录里找到temp文件夹,手动新建一个。

重新启动,浏览器输入localhsot 进入nginx页面成功即为安装成功!

二、申请SSL证书

腾讯云可以申请域名型免费SSL 腾讯云

立即购买

上面需要注意的提示为:仅支持绑定一个二级域名或者子域名,例如 tencent.com、cloud.tencent.com、dnspod.cloud.tencent.com的其中之一 。

也就是说申请的一个SSL只能绑定一个域名,但是可以多次申请绑定域名的二级域名或者子域名。

可以根据需要绑定域名或者二级域名或者子域名。例如我们申请的SSL所绑定的域名为 test.com

下一步需要解析验证,就是在域名所在的网站上根据腾讯云给出的参数去解析一条记录,来证明这个域名的使用权。

例如我的域名是在美橙互联上,地址:https://www.cndns.com

则需要在域名解析这里添加一条记录,主机名填写腾讯云提供的主机记录字段,记录类型选择TXT,记录值填写腾讯云提供的记录值字段。

然后保存后等待生效,一般在一个半小时内,然后等待腾讯云签发即可。

在证书详情里下载证书文件

三、Nginx配置SSL证书实现Https代理

实现代理接收https请求,把请求转发到其他服务的http接口上。

(例如服务A在100.101.102.104:8080上,只允许http访问,nginx 服务在 100.101.102.103:8080 上,通过nginx配置SSL证书来实现接口https的请求,然后把请求代理发送http请求到A服务上)。

把 test.com.key 和 test.com_bundle.crt 两个文件放到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/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on; keepalive_timeout 65; #gzip on; server {
listen 81;
server_name test.com; return 301 https://$host$request_uri; error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
} # HTTPS server
#
server {
listen 8080 ssl; # nginx所使用的端口
server_name test.com; # SSL 证书绑定的域名 ssl_certificate test.com_bundle.crt;
ssl_certificate_key test.com.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers CDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on; location / {
proxy_pass http://100.101.102.104:8080; # 需要转发到的服务地址 A服务的地址
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
}
}
}

重启nginx或者刷新nginx配置文件即可。

测试:

例如A服务有一个接口为:http://100.101.102.104:8080/login/index

则测试https://test.com/login/index

看是否和http://100.101.102.104:8080/login/index访问一致。

windows系统配置Nginx使用SSL证书实现Https反向代理的更多相关文章

  1. Nginx下SSL证书设置和反向代理

    上来就贴代码: server { listen ; server_name **.****.net; #填写绑定证书的域名 ssl on; ssl_certificate /opt/nginx-/co ...

  2. Nginx配置SSL证书实现https访问「浏览器未认证」

    http 和 https 介绍 http:应用最广泛的一种网络协议,是一个B/S的request和response的标准,用于从www服务器传输超文本到本地浏览器的传输协议. https:以安全为目标 ...

  3. [转] Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程

    一.HTTPS 是什么? 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合 ...

  4. Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程

    一.HTTPS 是什么? 根据维基百科的解释: 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合 ...

  5. nginx配置ssl证书实现https加密请求详解

    原文链接:http://www.studyshare.cn/software/details/1175/0 一.加密方式 1.对称加密 所谓对称加密即:客户端使用一串固定的秘钥对传输内容进行加密,服务 ...

  6. Nginx配置SSL证书部署HTTPS网站(颁发证书)

    一.Http与Https的区别HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...

  7. Nginx配置SSL证书部署HTTPS网站

    1.购买ssl证书 购买网站:沃通 2.上传证书到nginx服务器,然后进行解压. 解压后的的效果: [root@bubidev-ng3 nginx]# pwd/etc/nginx [root@bub ...

  8. centos7 nginx配置ssl证书实现https访问同时http访问

    1,首先将你申请到的nginx 分类下的ssl证书上传到nginx的config下(可以新建一个目录叫ssl.) 2.修改nginx的config配置 server {listen 80;(监听80端 ...

  9. Nginx配置SSL证书部署HTTPS方法

    1.申请域名,绑定服务器ip(我申请的是阿里云服务器,以下就此为例) 2.可以在阿里云上免费申请SSL证书(下载证书,后续会用到) 3.在服务器中配置证书 在服务器上安装Nginx 将下载好的证书上传 ...

随机推荐

  1. 【LeetCode】401. Binary Watch 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 java解法 Python解法 日期 [LeetCo ...

  2. 1007 - Mathematically Hard

    1007 - Mathematically Hard    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 6 ...

  3. CRB and His Birthday(hdu 5410)

    CRB and His Birthday Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  4. python学习第六天:python基础(dict、set)

    dict dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度 创建&取值 为什么dict查找速度这么快? 因为 ...

  5. Go语言核心36讲(新年彩蛋)--学习笔记

    新年彩蛋 | 完整版思考题答案 基础概念篇 Go 语言在多个工作区中查找依赖包的时候是以怎样的顺序进行的? 答:你设置的环境变量GOPATH的值决定了这个顺序.如果你在GOPATH中设置了多个工作区, ...

  6. 计算机系统2->从芯片说起 | 芯片怎样诞生

    这部分数字逻辑课上老师在讲CMOS部分时有讲过,当时在课堂上放了一个全英的视频,没怎么看懂,现在在研究计算机系统,自底层说起,也得从这讲起. 主要参考: <嵌入式C语言自我素养> b站相关 ...

  7. [Opencv]几种对轮廓的处理方式

    boundingRect() 作用:计算点集的右上边框. 形式:boundingRect(InputArray points): 参数:points:输入二维点集,并用std::vector or M ...

  8. css 快速入门 系列 —— 浮动

    浮动 以 mdn float 文档 为基础,逐一介绍浮动的本质.浮动的诸多特性.清除浮动以及块格式化上下文(bfc). 概念 当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移 ...

  9. MongoDB应用场景及选型

    1. MongoDB数据库定位 * OLTP数据库 * 原则上Oracle和MySQL能做得事情,MongoDB都能做(包括ACID事务) * 优点:横向扩展能力,数据量或并发量增加时候可以自动扩展 ...

  10. for update未提交导致锁表

    select for update 是为了在查询时,避免其他用户以该表进行插入,修改或删除等操作,造成表的不一致性. 应用场景: 什么时候需要使用for update?就是那些需要业务层面数据独占时, ...