FRP实现https访问内网网站的方法

通过服务端配置nginx即可。

需提前申请好对应的域名证书(可以用宝塔申请好,然后把对应的文件拷贝出来使用)

其中yun.domain.com为域名

 

nginx配置

server
{
listen 80;
listen 443 ssl http2;
server_name yun.domain.com;
location / {
proxy_pass http://$host:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}

#代码拷贝自宝塔面板部署证书后的网站配置

ssl_certificate /frps/yun.domain.com/fullchain.pem;
ssl_certificate_key /frps/yun.domain.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;

#SSL-END

#代码拷贝自宝塔面板部署证书后的网站配置

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://$host:8080;#添加这一行
expires 30d;
}

location ~ .*.(js|css)?$
{
proxy_pass http://$host:8080;#添加这一行
expires 12h;
}
location ~ /.
{
deny all;
}
}

frps中配置不变。

其中vhost_http_port = 8080

frpc中配置http即可。

 

如果是nextcloud通过这种方式进行配置https的话,需要在nextcloud的配置文件中进行两项配置

'overwriteprotocol' => 'https',
'overwritehost' =>'域名',

这样配置后,可以解决一些小问题,我遇到了在APP登录时会无限循环无法登录。