账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    nginx 配合 frp 访问内网 web 应用时端口号的问题
    95
    0
    局域网中各硬件的配置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 = tcplocal_ip = 127.0.0.1local_port = 80remote_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 = tcplocal_ip = 127.0.0.1local_port = 8081remote_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的访问地址
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 十年卧雪 普通会员 1楼

      Nginx 和 Frp(内网穿透工具)配合使用时,主要是为了实现外部网络通过公网 IP 访问内网的 Web 应用。在这个过程中,端口号的配置是关键的一环。

      1. 内网 Web 应用端口: 首先,你需要确保你的内网 Web 服务已经在某个端口上运行,例如 8080 端口。假设你的内网 Web 应用地址是 http://192.168.1.100:8080

      2. Frp 配置: 在 Frp 的客户端配置文件(如 frpc.ini)中,你需要配置一个隧道,将公网的某个端口映射到内网 Web 服务的端口。例如:

      ini [web_service] type = tcp local_ip = 192.168.1.100 local_port = 8080 remote_port = 6000 这个配置意味着,任何到达公网服务器 6000 端口的请求,都会被转发到内网的 192.168.1.100:8080

      1. Nginx 配置: 根据需求,你可能需要或不需要在公网服务器上的 Nginx 进行端口转发或反向代理设置。

      2. 如果你希望外部访问时直接使用标准 HTTP(80 端口)或者 HTTPS(443 端口),那么可以配置 Nginx 将来自这些端口的请求转发到 Frp 映射后的端口(这里是 6000 端口)。示例配置如下:

      ```nginx server { listen 80; server_name your.domain.com;

      location / {
          proxy_pass http://127.0.0.1:6000;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
      }
      

      } ```

      • 如果 Frp 已经将内网端口映射到公网的标准 Web 端口(即无需 Nginx 转发),则可以直接通过 http://your.public.ip:6000 或者域名 http://your.domain.com:6000 来访问内网的 Web 应用。

      总结一下,在 Nginx 配合 Frp 访问内网 Web 应用时,关键在于正确配置 Frp 的端口映射以及根据需求决定是否通过 Nginx 进行进一步的端口转发或反向代理设置。

    • 逍遥人世欢 普通会员 2楼

      在使用 Nginx 配合 FRP(Fast Reverse Proxy)访问内网 Web 应用时,端口号的处理通常涉及以下几个方面:

      1. 内网 Web 应用端口: 内网 Web 应用运行在特定的端口上,例如,你的 Web 服务器可能运行在 8080 端口。确保应用正常运行且可通过内网 IP:8080 访问。

      2. FRP 配置: 在 FRP 服务端配置中,你需要设置一个代理,将公网请求转发到内网 Web 应用。例如,你可以配置如下: [web_server] type = tcp local_ip = 192.168.1.100 # 内网 Web 服务器 IP local_port = 8080 # 内网 Web 服务器端口 remote_port = 6000 # 公网端口,通过这个端口从公网访问

      3. Nginx 配置: 如果你想通过 Nginx 提供 HTTPS 或者基于域名的访问,并隐藏 FRP 的公网端口,可以在 Nginx 的 server 块中配置反向代理,将来自公网的 443 端口(HTTPS)或 80 端口(HTTP)请求转发到 FRP 的公网端口: ```nginx server { listen 80; server_name yourdomain.com;

        location / { proxy_pass http://your_public_ip:6000; # 这里是 FRP 的公网 IP 和端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } `` 对于 HTTPS,你还需要配置 SSL 相关内容,并将listen` 改为 443 端口。

      通过以上步骤,用户就可以通过 http(s)://yourdomain.com 访问到内网的 Web 应用了,而无需关心实际的内网端口和 FRP 公网端口。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部