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