Nginx代理https请求的操作过程

这篇具有很好参考价值的文章主要介绍了Nginx代理https请求的操作过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

理论很简单,过程很曲折,版本适配的问题要小心。

场景:
要和前端进行联调,我本地后端用了https,证书是自制的,主要是页面里面有一些oauth2认证的地方,需要跳转。
比如https://aaa.com/profile.html,认证通过之后要跳转到这个页面。

前端的电脑,直接访问后台的页面都是正常的,于是要加域名来实现上面的需求。

后端的电脑配置hosts,192.168.1.1 aaa.com
前端的电脑配置127.0.0.1 aaa.com

然后使用nginx代理,难点在于tomcat自制的jks证书不是nginx支持的,所以要进行转换。
转换的时候要用到openssl,注意其中有一个算法的问题,最好使用openssl旧版本,1.xxx,用新版本会涉及到一个算法不支持的问题,还需要调整。主要是我调整了没有成功,缺少对应的库。

keytool -list -keystore server.jks

会使用到里面的srcalias,不过用不用这个命令都可以,因为tomcat证书,后端肯定是配置了alias,用的就是配置的server.ssl.key-alias=tomcat。

2.将jks文件导出为Nginx所需要的文件.crt和.key
2.1 将”.jks”转为”.p12”(PKCS12格式的证书库)

keytool -importkeystore -srckeystore oldkeystore.jks -srcalias tomcat -destkeystore newkeystore.p12 -deststoretype PKCS12

查看新格式(pkcs12)证书库

keytool -deststoretype PKCS12 -keystore newkeystore.p12 -list

2.2提取证书

openssl pkcs12 -in newkeystore.p12 -nokeys -clcerts -out server-ssl.crt
openssl pkcs12 -in newkeystore.p12 -nokeys -cacerts -out gs_intermediate_ca.crt

server-ssl.crt是SSL证书,gs_intermediate_ca.crt是中级证书,俩个合并到一起才是nginx服务器所需要的证书

2.3合并证书

cat server-ssl.crt gs_intermediate_ca.crt >server.crt

此时server.crt是一个完成的证书
合并证书这里使用的是cat命令,其实就是两个证书的输出合并到同一个里面,但是我的不知道为什么gs_intermediate_ca.crt这个是空的,所以等于server.crt 就是 server-ssl.crt

2.4提取私钥

openssl pkcs12 -nocerts -nodes -in newkeystore.p12 -out server.key

server {
        listen       443  ssl;
        server_name  aaa.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
		
		ssl_certificate server.crt;
		ssl_certificate_key server.key;
		
		location / {
			proxy_pass https://192.168.1.1:443;  # 将请求转发到 https://example.com
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;

			# SSL specific settings
			proxy_ssl_verify off;  # 如果你信任目标服务器,可以关闭 SSL 验证
			# proxy_ssl_trusted_certificate /path/to/trusted/ca/certs;  # 如果启用 SSL 验证,指定受信任的 CA 证书
			# proxy_ssl_verify_depth 2;  # SSL 验证的深度
		}

nginx用的是1.18版本,注意证书配置位置是相对conf的位置。文章来源地址https://www.toymoban.com/news/detail-816654.html

到了这里,关于Nginx代理https请求的操作过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Nginx】使用自生成证书配置nginx代理https

    使用Nginx代理HTTPS请求并使用自签名证书,可以按照以下步骤进行配置: 生成自签名证书: 打开终端或命令提示符,并导航到Nginx配置文件所在的目录。 运行以下命令生成自签名证书和私钥: openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt 根据提示输入证书的相

    2024年01月18日
    浏览(62)
  • Nginx之正向代理与反向代理进阶(支持https)

    在【Nginx之正向代理与反向代理】一文中我们实现了将Nginx服务器作为正向代理服务器和反向代理服务器, 但美中不足的是仅支持http协议,不支持https协议 。 我们先看看看http和https的区别: http协议 :协议以明文方式发送数据,不提供任何方式的数据加密。不适合传输一些敏

    2024年02月13日
    浏览(37)
  • nginx 离线安装 https反向代理

    1.1 安装gcc和gcc-c++ 1.1.1下载依赖包 gcc依赖下载镜像地址: 官网:https://gcc.gnu.org/releases.html 阿里云镜像站:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ CentOS 镜像站点:https://vault.centos.org/7.5.1804/os/x86_64/Packages/ ​只需下载如下依赖即可: 1.1.2 上传依赖包 下载完成后,将依赖包上

    2024年02月02日
    浏览(67)
  • kkviewfile 实现nginx反向代理+https

    3.1 如果访问出错,并且报错信息是下图 两种解决方案 第一用我打包好的jar,下载替换就行 代码是 2021年7月6日,v4.0.0 版本 下载地址:链接: https://pan.baidu.com/s/1yqJDa75tokAWQhn_tfCOmA?pwd=ribv 提取码: ribv 第二你自己在gitee拉取代码进行处理 如果拉取中报错 error: RPC failed; curl 18 tr

    2024年02月11日
    浏览(44)
  • 大数据云计算运维之Nginx反向代理与负载均衡

    一、Nginx概述 1.1 概述 Nginx(“engine x”)是一个高性能的 HTTP /反向代理的服务器及电子邮件(IMAP/POP3)代理服务器。 官方测试nginx能够支撑5万并发,并且cpu,内存等资源消耗却非常低,运行非常稳定。最重要的是开源,免费,可商用的。 Nginx还支持热部署,几乎可以做到7 *

    2024年02月11日
    浏览(55)
  • Nginx反向代理请求头丢失

    请求头丢失问题 在配置nginx使用https对服务器上的应用程序进行代理时,查看应用程序的访问日志发现请求头中的token信息丢失了。 解决方案 在对应的https配置模块中添加以下内容 同时在http模块中添加配置 完整配置如下

    2024年02月16日
    浏览(36)
  • nginx配置http请求转成https请求

    1、return 301 2、rewitre 3、error_page 原理: http和https是tcp的上层协议,当nginx服务器建立tcp连接后,根据收到的第一份数据来确定客户端是希望建立tls还是http。nginx会判断tcp请求的首写节内容以进行区分,如果是0x80或者0x16就可能是ssl或者tls,然后尝试https握手。如果端口开启了

    2024年02月07日
    浏览(42)
  • nginx如何代理转发第三方https网站

    这里准备官方nginx镜像 上诉示例中,如果是https,proxy_ssl_session_reuse ,proxy_ssl_server_name ,这两个没有会报ssl SSL_do_handshake() failed SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 127.0.0.1, server: 127

    2024年02月13日
    浏览(50)
  • nginx 配置代理ip访问https的域名配置

    目录 问题背景 解决方式 正向代理:  反向代理:  通俗点儿一句话,正向与反向的区别: 在某些单位或机构内部,访问互联网接口需要通过指定的服务器去访问,那我们就需要通过代理 ip 和 端口去访问外网域名。 示例:如何通过指定 ip 和 端口 访问 https://api.elecredit.co

    2024年02月14日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包