使用Nginx Frp群晖DSM7.0后手机浏览器无法打开登录一直 Loading…

环境说明

个人家里的服务器采用双线路访问

  • frp 方式 (主要访问群晖nas网页版、esxi控制台等)
  • 公网IP (pt辅种、drive文件同步)
  • 架构图如下1652729384493.png

        <img src="https://img.mryunwei.com/uploads/2023/05/20230504120808755.jpg" alt>
    
            <img src="https://img.mryunwei.com/uploads/2023/05/20230504120808755.jpg" alt>
    
                <h2>群晖NAS使用Docker部署frpc客户端实现内网穿透</h2>
    
                    <img src="https://img.mryunwei.com/uploads/2023/05/20230504120809553.gif">新闻联播老司机
                    <li>
                            22年2月19日</li>
                        <li>
                            喜欢:0
                        </li>
                        <li>
                            浏览:1.1k
                        </li>
    
        <img src="https://img.mryunwei.com/uploads/2023/05/20230504120809480.jpg" alt>
    
            <img src="https://img.mryunwei.com/uploads/2023/05/20230504120809480.jpg" alt>
    
                <h2>利用FRP和Openvpn实现内网穿透外网访问</h2>
    
                    <img src="https://img.mryunwei.com/uploads/2023/05/20230504120809553.gif">新闻联播老司机
                    <li>
                            20年8月9日</li>
                        <li>
                            喜欢:0
                        </li>
                        <li>
                            浏览:22.1k
                        </li>

    目前公网IP访问群晖nas网页版手机电脑都没有问题,nginx + frp代理的方式PC端也没用问题,但是手机端会一直提示Loading..加载中 首先我们先看一下frpc配置

    [common]
    server_addr = FRP服务端IP
    server_port = 端口号
    
    token = i4t.com
    
    [esxi]                          <<=== esxi配置
    protocol = kcp
    local_ip = 192.168.31.100   
    local_port = 443
    remote_port = 8098
    custom_domains = esxi.frps.cn
    
    [nas]                           <<=== 白群晖920+配置
    type = tcp
    local_ip = 192.168.31.198   
    local_port = 5000
    remote_port = 4010
    custom_domains = nas.frps.cn
    use_encryption = true
    use_compression = true
    force_https = 301
    
    [nas-j1900]                         <<=== 黑群晖j1900配置
    type = tcp
    local_ip = 192.168.31.199 
    local_port = 5000
    remote_port = 3011
    
    [jumpserver]
    type = tcp
    local_ip = 192.168.31.99
    local_port = 8080
    remote_port = 2002
    
    [windows01]
    type = tcp
    local_ip = 192.168.31.177
    local_port = 3389
    remote_port = 3984
    
    [windows02]
    type = tcp
    local_ip = 192.168.31.178
    local_port = 3389
    remote_port = 3985

    Nginx 采用宝塔安装,直接给大家看下nginx upsteam配置

    已经添加ws的支持

    1652729848907.png

    PC端效果图1652729888020.png 移动端访问提示如下

    使用内网IP以及frp ip访问均没有问题。所以想到是nginx的问题,查看访问状态为多个页面404状态。刚开始猜测是nginx upstream匹配不到,但是后面修改过还是出现类似的情况

    1652729920768.png

    F12错误如下 通过经验仔细想了一下,如果是nginx资源匹配的问题,那么应该所有群晖静态资源都无法访问才对,但是目前看只有这js和css有问题

    1652730145306.png

    解决方法

    解决办法 在nginx upsteam代理中,添加对http 1.1的支持

     proxy_http_version 1.1;
    1652730283272.png

    通过网上查找发现问题,nginx在代理是默认http版本为1.0,由于文件的下载涉及到使用分块传递,但http1.0是不支持这个特性的。所以服务端为1.1版本无法进行转发 点击保存后我们浏览器模拟手机端再次访问,就可以正常访问了1652730402108.png

    目前排查出群晖7.x才会有这个问题,在早期6.x版本中。是没有这个问题!

    相关文章:

    1. CentOS 7 ETCD集群配置大全
    2. Kubernetes 1.14 二进制集群安装
    3. Docker 镜像及Docker仓库配置 [四]
    4. 内网穿透Nas 基于Frp实现群晖的远程访问