项目需要https环境,由于开发状态中,需要做一个穿透,之前都是 frp
做的 http
穿透,比较简单,结果找了下https
的资料和github
上的怎么都不行,瞎折腾了一个小时...
7001
443
。证书申请,然后下载,拿到nginx
配置的两个文件.
然后,确保本地项目能正常启动并可以访问,我本地的是: http://localhost:8090/example
。
下载对应的frp软件,我使用的是0.33
版本(最新的),地址https://github.com/fatedier/frp/releases
,下载对应的windows 和 linux版本。
# 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;
}
[common]
bind_port = 7001
vhost_http_port = 5556
vhost_https_port = 5557
[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