frps服务器与网站服务共用80端口的方法

前言

前段时间在服务器上搭建了frp内网穿透的服务,苦于网站已经提前使用了80端口,而浏览器这边默认的http端口是80,自己设置的端口号需要手动打上才能使用,因此在一段时间内使用frp远程访问设备都是使用域名加端口的方式。

(ru.chenyan98.cn:88可以访问直接使用ru.chenyan98.cn则不能访问)

后来发现可以使用Nginx反向代理的方式来实现80端口的复用,直接使用域名访问,现在分享给大家,也给大家做个参考。

此方法同样适用于其他端口被占用的情况,在这里说一句:Nginx Yes !

Nginx反向代理简介

1.什么是反向代理:

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

图片[1]-frps服务器与网站服务共用80端口的方法 | 登山亦有道-登山亦有道

2.反向代理的主要作用:

目前web网站使用反向代理,除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。

下面来介绍具体的方法:

修改Nginx配置文件

宝塔面板中可以比较直观的修改,不使用宝塔面板的话可以自己手动修改nginx的配置文件,修改前记得备份(养成一个好习惯很重要)

图片[2]-frps服务器与网站服务共用80端口的方法 | 登山亦有道-登山亦有道

在nginx.conf中http{ }里添加一个新的监听服务实现反向代理:

server {
        listen 80; 
        server_name ru.chenyan98.cn; 
        location / { 
        proxy_pass http://127.0.0.1:88;
        proxy_redirect http://$host/ http://$http_host/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        } 
        }

关于以上配置的注意事项:

  • proxy_pass http://127.0.0.1:88;需要与frps(服务端)配置的vhost_http_port的端口相对应
  • server_name ru.chenyan98.cn;需要与frpc(客户端)的配置文件中设置的域名相对应;支持泛解析(*.chenyan98.cn)但尽量不要使用,会出现主域名的SSL证书与二级域名冲突导致无法访问。

设置完成之后保存配置文件并重启Nginx服务,即可愉快的通过域名直接访问应用了。

修改完成_检查效果

浏览器中输入域名登录之后 按F12打开开发工具后可以看到远程地址的端口默认就已经是80了。

图片[3]-frps服务器与网站服务共用80端口的方法 | 登山亦有道-登山亦有道

搞乌龙的一些问题

图片[4]-frps服务器与网站服务共用80端口的方法 | 登山亦有道-登山亦有道

由于我的网站本身使用了SSL可以使用https访问,而OpenWrt内网穿透这边没有使用SSL在访问过程中会被浏览器强制跳转到https,目测还是宝塔的锅。(后来发现是Nginx配置文件写错导致主域名的SSL证书与二级域名冲突)

附录:作业环境简介

此文建立在使用 MvsCode/frps-onekey: Frps 一键安装脚本 & 管理脚本 A tool to auto-compile & install frps on Linux (github.com)和使用OpenWrt提供的Frp客户端的基础之上,与手动安装frp总体的操作逻辑一致,可以相互套用。

总体比较推荐使用可视化较强的一键安装脚本和自带frp客户端的OpenWrt或者LEDE软路由进行配置,所见即所得,能够减少错误的发生少走一些弯路。

参考链接:

腾讯云搭建frp服务端实现内网穿透 | 登山亦有道 (chenyan98.cn)

frps服务器与宝塔面板共用80端口的方法 | 星光博客 (xgboke.com)



© 版权声明
THE END
喜欢就支持一下吧
点赞50赞赏
分享
评论 抢沙发