专注web开发10年

frp反代家里的服务器 网站怎么实现http跳转到https呢?

提问者:饭饭 问题分类:其它

家里的服务器是用FRP内网穿透,如何强制启用https?web用的是Nginx

1 个回答
满意答案
花晨月夕
花晨月夕 管理员
专注web开发,可开发网站、小程序、app、oa、erp等各种系统

这需要frp客户端和nginx配合来实现跳转

你的nginx并不知道用户实际访问是http还是https,因为frp客户端在连接到内网的web服务器时都是通过80端口,所以只需要想办法告诉nginx用户是通过http还是https问题问题就能解决了

可以在frp客户端上配置加一个请求头,告诉nginx用户是用http访问的

加入配置 header_X-From-ssl = no

比如某个站点的配置修改后是这样的

type = http
local_ip = 192.168.2.211
local_port = 80
header_X-From-ssl = no
custom_domains = abc.net,www.abc.net
use_encryption = true
use_compression = true

然后重启frp客户端

在web服务器nginx配置中加入

if ($http_x_from_ssl = 'no'){
  return 301 https://$host$request_uri;
}

判断是否有在frp中自定义的请求头,如果有则代表是用http访问,那么就301跳转到https协议的网址

保存之后重启nginx

发布于:2年前 (2023-02-25) IP属地:江苏省
我来回答