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访问一致。
时间仓促,如有错误欢迎指出,欢迎在评论区讨论,如对您有帮助还请点个推荐、关注支持一下
作者:博客园 - 凉年技术
出处:http://www.cnblogs.com/xxhxs-21/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
若内容有侵犯您权益的地方,请公告栏处联系本人,本人定积极配合处理解决。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构