首页 > 系统相关 >【调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布】

【调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布】

时间:2024-06-20 23:31:51浏览次数:13  
标签:dl 20240617 nginx frp 公网 fun root tanghui 调试

调试笔记-系列文章目录

调试笔记-20240617-Linux- frp 结合 nginx 实现内网网站在公网发布


文章目录


前言

本文记录在 OpenWrt-23.05 上 配置 frp 和 nginx 实现内网网站在公网发布的调试步骤。

实验使用的电脑如下:

CPU:

Intel Core i5 8265U

操作系统:

Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

一、调试环境


操作系统:Windows 10 专业版

操作系统详细信息如下:

Microsoft Windows 10  Professional (x64), Version 22H2, Build 19045.4412

调试环境

  • Windows 系统已安装 QEMU 并成功运行 OpenWrt 发行版

参考【安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT


调试目标

公网可访问内网配置的网站。

在这里插入图片描述


二、调试步骤

公网 IP 服务器配置 frps

手动修改的 nginx 文件中, root 命令放在了最外层,如下所示:

http {

        ...
        root /srv/nginx/dl.tanghui.fun;
        ...
        server { # dl.tanghui.fun
        	...
        }
}

uci 自动生成的配置,为了统一将其放到了 .locations 文件中,通过 include 命令包含到 server 中,如下所示:

http {

        ...
        root /www;
        ...
        server { # dl.tanghui.fun
        	...
        	include conf.d/dl.tanghui.fun.locations;
        	include conf.d/php8.locations;
        	...
        }
}

dl.tanghui.fun.locations 文件内容如下:

location / {
    root /srv/nginx/dl.tanghui.fun;
    index index.html index.php;
    try_files $uri $uri/ /index.php$is_args$args;
    if ( -d $request_filename ) {
        rewrite ^/(.*)([^/])$ $scheme://$http_host/$1$2/ permanent;
    }
}

这样排列 root 导致在 php8.locations 中 document_root 实际使用的时 http {} 中的 root

重新调整 dl.tanghui.fun.locations 文件中的 root 命令,如下:

root /srv/nginx/dl.tanghui.fun;

location / {
    index index.html index.php;
    try_files $uri $uri/ /index.php$is_args$args;
    if ( -d $request_filename ) {
        rewrite ^/(.*)([^/])$ $scheme://$http_host/$1$2/ permanent;
    }
}

这样,让 root 命令归属于 server { #dl.tanghui.fun } 这一段中,重启 nginx 测试,显示正常。


内网主机配置 nginx

1、需要将 php.ini 中的 doc_root 设置注释掉

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
                 
;include_path = ".:/php/includes"
;doc_root = "/www"          
user_dir =                  
extension_dir = "/usr/lib/php8"
;sys_temp_dir = "/tmp"   
enable_dl = On         
cgi.force_redirect = 1    
;cgi.nph = 1             
cgi.redirect_status_env = "yes"
cgi.fix_pathinfo = 1 
;cgi.discard_path = 1  
;fastcgi.impersonate = 1        
;fastcgi.logging = 0                    
;cgi.rfc2616_headers = 0
;cgi.check_shebang_line = 1

内网主机配置 frpc


联调 frp 和 nginx


三、应用场景

内网网站发布

网站开发测试


四、参考资料


总结

本文记录在 openwrt-23.05 上配置 frp 和 nginx 实现内网网站在公网发布的调试步骤和解决方法。

标签:dl,20240617,nginx,frp,公网,fun,root,tanghui,调试
From: https://blog.csdn.net/dvd37784302/article/details/139756841

相关文章

  • YC303C [ 20240617 CQYC省选模拟赛 T3 ] Generals(generals)
    题意给定一张\(n\timesm\)的地图。对于第\(0\)列,第\(m+1\)列,第\(0\)行,第\(n+1\)行,有\(2n+2m\)个人,每个人面朝地图中心。每个人走到别人染过色的位置,或走出地图,将走过的地方染色。你需要求出共有多少种本质不同的染色方案。\(n,m\le10^6\)Sol直接......
  • Frp内网穿透
    Frp内网穿透1.Frp简介frp是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括TCP、UDP、HTTP、HTTPS等,并且具备P2P通信功能。使用frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网IP的节点进行中转。学习Frp最好的文档还是官方文档!官方文档链接:ht......
  • 20240617
    T1洛谷P10564RubbishSorting发现长度很小,考虑二进制枚举所有非匹配位。一个给定的字符串会构成一些模板,比如\(\texttt{abc}\)能产生模板\(\texttt{abc},\texttt{a_c},\texttt{ab_},\texttt{_bc},\texttt{a_},\texttt{_b},\texttt{a},\texttt{_}\)等。对于一个查询......
  • YC302A [ 20240617 CQYC省选模拟赛 T1 ] 构造字符串(string)
    题意你需要构造一个长度为\(n\)的字符串。使得后缀数组为给定的序列\(a\),\(\text{manacher}\)的回文序列为\(b\)。Sol注意到后缀数组实际上是一系列\(\le\)的限制,而\(\text{manacher}\)是一堆相等以及两个不相等的限制。若直接建边很难搞。考虑将限制统一,后缀数组......
  • Docker搭建FRP+OPENVPN+Prometheus+Grafana 实现内网穿透以及流量监控
    Docker搭建FRP+OPENVPN+Prometheus+Grafana实现内网穿透以及流量监控文章目录Docker搭建FRP+OPENVPN+Prometheus+Grafana实现内网穿透以及流量监控一、搭建Docker基础环境二、配置FRP,实现端口映射2.1使用Docker部署FRPFrps服务端(拥有公网IP)Frpc客户端(内网IP)三、搭建......
  • git学习笔记——202406171525
    想将本地仓库代码提交到远程仓库,应注意:如果在新建远程仓库时里面还新建了文件,在本地提交代码时会显示两个分支是冲突的,git认为是两个不相关的仓库代码,会拒绝上传。解决方法是gitpullremotemaster拉取远程代码到本地,然后再gitpushremote-umaster相关链接:https://www.cn......
  • [转]32th@C++ 20新特性之线程与jthread@20240617
    C++20新特性之线程与jthread为什么要引入jthread在C++11中,已经引入了std::thread。std::thread为C++标准库带来了一流的线程支持,极大地促进了多线程开发的便利性。但std::thread也存在一些明显的不足和短板,主要有以下几点。1、生命周期管理的复杂性。std::thread对象必须在它......
  • 弹性云服务器使用公网NAT网关和直接绑定弹性公网IP有区别吗
    公网NAT网关提供SNAT和DNAT功能,可允许多台弹性云服务器共享弹性公网IP。弹性云服务器直接绑定弹性公网IP为独占IP的方式。 当同一个弹性云服务器同时设置了SNAT和弹性公网IP时,会优先使用弹性公网IP进行转发。当同一个弹性云服务器同时设置了DNAT和弹性公网IP时,入云方向的......
  • 【NAS】Docker Gitea+SakuraFrp+绿联DPX4800标 搭建私有代码托管平台
    本文主要分享Gitea的一些设置,和Https的实现。Gitea的一些设置映射网络HTTPS的实现先准备好一个域名,建议准备一个1Panel创建一个AC账户然后点击申请证书,手动解析。申请完毕后,点击详情,查看证书crt和私钥key自己创建一个txt文本,将证书crt粘贴进去,然后将名字改为xxx.crt......
  • 用 tiny-frpc 轻松搞定内网穿透
    你是否曾为内网穿透的复杂配置和庞大工具而头疼?好消息来了,tiny-frpc就是为你设计的!这是由gofrp团队开发的一款轻量级反向代理工具,不仅简单高效,还能大大减少依赖和配置的麻烦。tiny-frpc基于Go语言开发,体积极小,部署和运行极为快速。下载、配置、运行,一气呵成,你只需要几分钟......