windows系统配置Nginx使用SSL证书实现Https反向代理

博客 动态
0 210
羽尘
羽尘 2022-01-27 10:54:35
悬赏:0 积分 收藏

windows系统配置Nginx使用SSL证书实现Https反向代理

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访问一致。

posted @ 2022-01-27 10:49 小小赫下士 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员