frp + nginx 实现 https 穿透

frp + nginx 实现 https 穿透

月光魔力鸭

2020-06-10 15:37 阅读 2538 喜欢 0 frp https nginx + frp

通过frp做穿透实现https 访问本地http项目。

项目需要https环境,由于开发状态中,需要做一个穿透,之前都是 frp 做的 http穿透,比较简单,结果找了下https的资料和github上的怎么都不行,瞎折腾了一个小时...

准备

证书申请,然后下载,拿到nginx配置的两个文件.

然后,确保本地项目能正常启动并可以访问,我本地的是: http://localhost:8090/example

下载对应的frp软件,我使用的是0.33 版本(最新的),地址https://github.com/fatedier/frp/releases ,下载对应的windows 和 linux版本。

nginx 配置

    # frp 穿透 https://live.example.com
    server {
        listen 443 ssl;
        server_name live.example.com;

        location / {
            proxy_pass   http://localhost:5556;
            client_max_body_size    1000m;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header User-Agent $http_user_agent;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
        ssl_certificate cert/1_live.example.com_bundle.crt;
        ssl_certificate_key cert/2_live.example.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
    }

frps.ini

[common]
bind_port = 7001
vhost_http_port = 5556
vhost_https_port = 5557

frpc.ini

[common]
server_addr = 59.222.12.198
server_port = 7001

[test_https]
type = http
local_port = 8090
custom_domains = live.example.com

启动

server端

./frps -c ./frps.ini

client端

./frpc -c ./frpc.ini

这里面碰到一个问题,jsp中的request.getServerPort() 得到的总是80 ,本应该是443 ,解决:

# 增加 $server_port 即可
proxy_set_header Host $host:$server_port;

第二个问题,request.getScheme() 得到的总是 http ,查资料说是:

# 增加这一句
proxy_set_header X-Forwarded-Proto $scheme;

不过对于我来说没有解决,框架是springboot ,目前直接写死了,先测试用着。

转载请注明出处: https://chrunlee.cn/article/frp-https-nginx.html


感谢支持!

赞赏支持
提交评论
评论信息 (请文明评论)
暂无评论,快来快来写想法...
推荐
反爬有很多手段,字体反爬就是其中之一。之前一直都是听过,但是却没怎么在实际爬虫中遇到过,最近在一个爬虫题目网站上看到了,试了试,发现还挺麻烦,当然自己从头研究字体肯定麻烦,简单的是模块多的是,选几个就过了。
扩展程序中会有需要请求外部接口获取数据的时候,如果直接在JS中写的话,会跨域,但是谷歌扩展程序支持这种情况,只需要配置一下即可。
功能来源于客户需求。客户有需求想把班级内所有学生的错题本生成pdf文档下载下来... 目前没有做这个功能,只有页面,还好chrome浏览器有保存pdf的功能,但是一想到这么多的学生,这么多的学科、以及这么多的参数... 还好有puppeteer
简单记录下dockerfile 以及compose配置
最近有个小功能需要一些基础数据,找了一下在小程序上有发现,暂时还没找到他的网站,想着把这些数据爬一些下来做为基础数据使用的。本来还想着直接反编译小程序的,没想到微信变更了加密方式,以前反编译的路子走不通了。
之前看知乎相中了一个想法,给宝宝做一个站,上传生活的日常照片啊、视频之类的,存储肯定是在自己家里,然后做个穿透这样..开始做的时候又想着是时候接触下这些东西了,虽然公司都一点不用,但是自己没事接触下拓展下也是好的。
最近先研究下jenkins远程部署,在自己服务器上跑一个先,简单记录下碰到的问题。
需求:可能会有在页面加载的时候想执行某个js,例如统计页面的DOM等等。