前言
前段时间在服务器上搭建了 frp 内网穿透的服务,苦于网站已经提前使用了 80 端口,而浏览器这边默认的 http 端口是 80,自己设置的端口号需要手动打上才能使用,因此在一段时间内使用 frp 远程访问设备都是使用域名加端口的方式。
(ru.chenyan98.cn:88 可以访问直接使用 ru.chenyan98.cn 则不能访问)
后来发现可以使用 Nginx 反向代理的方式来实现 80 端口的复用,直接使用域名访问,现在分享给大家,也给大家做个参考。
此方法同样适用于其他端口被占用的情况,在这里说一句:Nginx Yes !
Nginx 反向代理简介
1. 什么是反向代理:
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
![图片[1] - frps服务器与网站服务共用80端口的方法 - 登山亦有道](http://qiniu.chenyan98.cn/wp-content/uploads/2021/03/1617169576-ReProxy.webp)
2. 反向代理的主要作用:
目前 web 网站使用反向代理,除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
下面来介绍具体的方法:
修改 Nginx 配置文件
宝塔面板中可以比较直观的修改,不使用宝塔面板的话可以自己手动修改 nginx 的配置文件,修改前记得备份 (养成一个好习惯很重要)
![图片[2] - frps服务器与网站服务共用80端口的方法 - 登山亦有道](http://qiniu.chenyan98.cn/wp-content/uploads/2021/03/1616980006-image-7.webp)
在 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端口的方法 - 登山亦有道](http://qiniu.chenyan98.cn/wp-content/uploads/2021/03/1616980025-image-8.webp)
搞乌龙的一些问题
![图片[4] - frps服务器与网站服务共用80端口的方法 - 登山亦有道](http://qiniu.chenyan98.cn/wp-content/uploads/2021/03/1616980079-image-2.webp)
由于我的网站本身使用了 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 软路由进行配置,所见即所得,能够减少错误的发生少走一些弯路。
参考链接:
作者:晨岩
本站所有文章除特别声明外,均采用 BY-NC-SA 4.0 许可协议。转载请注明出处!
暂无评论内容