nginx 配合 frp 使用二级域名访问局域网 WEB 服务的问题

本地服务器配置

win 服务器部署了 springboot 项目 (jar 项目不是前后分离,一个 jar 文件中有前端页面也有后端 API),端口号8081,局域网内访问 http://192.168.0.205:8081/xzy... 测试访问通的。同时本服务器上安装了 frp 的客户端,相关的配置如下

[erp_bylmysql]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 15305

根据上面配置跨网(不在 win 服务器的局域网内)通过地址:http://49.xxx.xxx.119:15305/x... 访问项目也是通的
同时本服务器还安装了 nginx ,相关配置如下。其中 hy.atools.club 是腾讯云服务器绑定的域名 atools.club 的二级域名

    server {
        listen       80;
        server_name  localhost hy.atools.club 127.0.0.1 49.xxx.xxx.119;
        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:8081/xzy;
            proxy_redirect http://127.0.0.1:8081/xzy /xzy;
            proxy_cookie_path /xzy /xzy;
        }
        
        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;
        }
    }

腾讯云服务器

腾讯云服务器是 CentOS7 系统,安装了 nginx,相关的配置如下。监听80端口和二级域名,映射到本机的 15305 端口,即映射到 win 服务器所在的局域网内。

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;
  }
}

测试和问题

  1. 按照上面的配置在浏览器中通过地址:http://hy.atools.club/xzy/login 访问,提示:该网页无法正常运作,HTTP ERROR 502
  2. 但是通过地址 http://hy.atools.club:15305/x... 访问则可以,我要如何做可以不用输入端口号 15305

    下面是简单的网络拓扑图

阅读 3.6k
3 个回答

proxy_pass的地址后加个/试试http://127.0.0.1:15305/;

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/;
  }
}

我看你两个地方都对域名 hy.atools.club 设置了80端口监听的location /项目,但反向代理的目标是不同的,是否有重复设置和冲突?

我大致搞清楚你的想法啦,这个还和你frp的服务端配置有关啊

看了流程,我感觉是没问题的。
要不你这样试试?

  1. 你试试在外网vps上,看看能不能访问到127.0.0.1:15305
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题