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