局域网中各硬件的配置
win 服务器中部署了 springboot 项目,并不是前后分离的项目,一个 jar 中有前端页面也有后端服务。同时本服务器上安装了 nginx,监听了 80 端口 ,关于本项目的配置如下
location /xzy { proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8081/xzy; proxy_redirect http://127.0.0.1:8081/xzy /xzy; proxy_cookie_path /xzy /xzy; }
我的开发用电脑处于该服务器的同局域网内,开发电脑的 hosts 做了下面的配置
192.168.0.205 xzyerpserver
- 基于上面的配置我在局域网中可以这样访问项目:http://xzyerpserver/xzy/login .
保证上面配置有效后,在 win 服务器上安装了 frp 客户端(当然有对应的腾讯云服务器上安装了 frp 的服务端),这里假设云服务器的 IP 地址是 49.xxx.xxx.119. win 服务器的 frpc.ini 中的配置如下
[erp_bylmysql] type = tcp local_ip = 127.0.0.1 local_port = 80 remote_port = 15305
- 此时我在家里可以这样访问:
http://49.xxx.xxx.119:15305/xzy/login
,能正常打开项目的登录页面。点击登录后地址栏被自动更改为http://49.xxx.xxx.119/xzy/home
, 出现“该网页无法正常运作” HTTP ERROR 502. 看下图
此时手动将地址栏的URL更换为http://49.xxx.xxx.119:15305/xzy/home
(即手动在IP地址后面填写 frp 映射的端口号),就可以正常打开项目了。 - 我的问题是,要如何配置可以不用手动填写端口号,登录后能正常打开项目。
- ====================================================================
- 上面要手动填写端口号的问题解决了,下面还有二级域名的问题
- 腾讯云服务器(CentOS7)的IP地址绑定到我的域名 atools.club(在 DNSPOD 上设置了解析),同时设置了一个二级域名:hy.atools.club 。并且在该 CentOS7的服务器上安装了 nginx 关于该二级域名的配置如下
server {
listen 80;
server_name hy.atools.club;
location / {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:15305;
}
}
- 本CentOS7服务器上还安装了 frps (frp服务端) ,在线下的 win 服务器上安装了 frp 的客户端,客户端中相关的配置如下 - win 服务器中 springboot 项目的端口号是8081
[erp_bylmysql]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 15305
- 线下的 win 服务器也安装了 nginx ,相关的配置如下。nginx 中并没有监听 8081,下面的配置起始是无效的吧。
server {
listen 80;
server_name localhost hy.atools.club 127.0.0.1 49.xxx.xxx.119;
location /xzy {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8081/xzy;
proxy_redirect http://127.0.0.1:8081/xzy /xzy;
proxy_cookie_path /xzy /xzy;
}
}
- 我在外网(非win服务器的局域网),访问地址:http://hy.xdfznh.club/xzy/login,是下面的效果。然后我到 win 服务器的 nginx 的日志目录下看 access.log 大小是0KB - 访问之前删除了该文件
- 我的问题是,我要如何做可以通过二级域名访问内网的 web 服务。就如上面步骤12的访问地址
可以试试改成这样
用frp把内网的8081映射到vps的任意一个端口上,然后 vps 上也配置一个nginx,配置和内网的一致,proxy_pass端口改成vps上映射的端口。
===
登录之后自动跳转到80端口,我也猜测应该是代码逻辑问题。
===
补充:
举个例子,我现在在内网有一个nextcloud:127.0.0.1:7090
frpc 的配置是:
外网VPS配置:
proxy.conf.part
同时内网也配置了nginx,方便内网在访问,用的另外一个域名: