Frp内网穿透之Nginx反代隐藏端口踩坑

写在前面:本篇文章仅适用于服务端搭建好的读者。

问题描述:

配置好服务端后,开放Frp配置的http和https端口,默认分别为5444,5443。在安全组内放行相关端口后,设置Nginx反代依旧无法访问。使用域名访问出现502情况或者“The page you visit not found. Sorry, the page you are looking ……”此类情况。

问题分析:

1,排除是Frp设置问题,查阅Frp安装路径下的相关文件:Centos环境下(/usr/local/frps)的frps.ini,并检查端口开放情况排除“未开启端口”的问题。

2,查阅位于Github的Frp中文配置指南(https://github.com/fatedier/frp/blob/master/README_zh.md)后排除客户端设置有误的问题。

3,查看Nginx反代相关文件,最终将错误定位在此处。

错误产生原因:

1,Https反代提示502原因

Frp是根据$host来判断该向何处内网转发,在proxy_pass 后如果写成IP形式则会出现此类错误

如:proxy_pass https://127.0.0.1:XXXX

争取的写法为:proxy_pass https://$host:XXXX 同时要添加:proxy_ssl_server_name on;

如:

location / { proxy_ssl_server_name on; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host:$server_port; proxy_pass https://$host:xxxx; #通过域名访问frp服务 }

2,Http反代提示“The page you visit not found. Sorry, the page you are looking……”的原因

一方面也是由于:Frp是根据$host来判断该向何处内网转发,在proxy_pass 后如果写成IP形式则会出现此类错误

但是解决办法应该是将反代配置修改为:

location/{ proxy_pass http://127.0.0.1:xxxx; 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; }

至此,这个困然我三小时的问题终于完美解决。如有不当之处还请大家指正。 Wicos 2020.1.21


Frp内网穿透之Nginx反代隐藏端口踩坑
https://www.wicos.me/jishu/842/
作者
Wicos
发布于
2020年1月21日
许可协议