<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nginx相关文章列表 | 皇家元林</title>
	<atom:link href="https://hjyl.org/tags/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>https://hjyl.org</link>
	<description>刘元林的个人博客</description>
	<lastBuildDate>Wed, 25 Dec 2024 15:45:43 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://img.hjyl.org/uploads/2019/10/cropped-about-me-32x32.png</url>
	<title>Nginx相关文章列表 | 皇家元林</title>
	<link>https://hjyl.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>推荐一款LNMP 环境的开源面板——耗子面板</title>
		<link>https://hjyl.org/lnmp-haozi-panel/</link>
					<comments>https://hjyl.org/lnmp-haozi-panel/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Wed, 25 Dec 2024 15:45:37 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[go语言]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SSL证书自动化]]></category>
		<category><![CDATA[耗子面板]]></category>
		<category><![CDATA[运维面板]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=5633</guid>

					<description><![CDATA[前两天从毫秒镜像发现他们合作的一款运维面板——耗子面板挺不错的。不知道有多少人在用，别的不说，WeAvatar [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>前两天从<a href="https://hjyl.org/go/aHR0cHM6Ly8xbXMucnVu" rel="nofollow" target="_blank">毫秒镜像</a>发现他们合作的一款运维面板——耗子面板挺不错的。不知道有多少人在用，别的不说，WeAvatar就是他们的。这是一款基于go语言开发的，在Linux系统，go语言开发的软件都很好用，譬如hugo、frp、Artalk等。面板很清爽，无广告，分类也清楚，简单上手快，安装的PHP、nginx、MySQL等软件版本都是最新的，下载编译的速度也挺快。支持docker、SSL证书自动化。唯一缺点我感觉就是docker没有compose.yml安装容器，这点fnos就比较方便。对于常用docker的玩家比较不友好吧。</p>



<p>官方网站：<a href="https://hjyl.org/go/aHR0cHM6Ly9yYXRwYW5lbC5naXRodWIuaW8v" rel="nofollow" target="_blank">https://ratpanel.github.io/</a></p>



<p>GitHub库：<a href="https://hjyl.org/go/aHR0cHM6Ly9naXRodWIuY29tL1RoZVROQi9wYW5lbC9yZWxlYXNlcy8=" rel="nofollow" target="_blank">https://github.com/TheTNB/panel/releases/</a></p>



<p>安装命令（一般 2 分钟内完成安装）：</p>



<pre class="wp-block-code"><code lang="bash" class="language-bash line-numbers">curl -fsLm 10 -o install.sh https://dl.cdn.haozi.net/panel/install.sh &amp;&amp; bash install.sh</code></pre>



<p>话不多说，可自行用虚拟机测试，仁者见仁吧，我截了几张图可以品一品。</p>



<figure class="wp-block-gallery has-nested-images columns-4 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1176" height="693" data-id="5634" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214032_151.png"  class="wp-image-5634" title="wechat_2024 12 25_214032_151.png" alt="wechat_2024 12 25_214032_151.png" /><figcaption class="wp-element-caption">面板登录信息</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="3830" height="1955" data-id="5635" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214206_276.png"  class="wp-image-5635" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214206_276.png 3830w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214206_276-1536x784.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214206_276-2048x1045.png 2048w" sizes="(max-width: 3830px) 100vw, 3830px" title="wechat_2024 12 25_214206_276.png" alt="wechat_2024 12 25_214206_276.png" /><figcaption class="wp-element-caption">面板主页</figcaption></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="3803" height="1932" data-id="5641" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_233956_379.png"  class="wp-image-5641" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_233956_379.png 3803w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_233956_379-1536x780.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_233956_379-2048x1040.png 2048w" sizes="(max-width: 3803px) 100vw, 3803px" title="wechat_2024 12 25_233956_379.png" alt="wechat_2024 12 25_233956_379.png" /><figcaption class="wp-element-caption">安装应用日志</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3795" height="1898" data-id="5639" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214339_818.png"  class="wp-image-5639" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214339_818.png 3795w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214339_818-1536x768.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214339_818-2048x1024.png 2048w" sizes="auto, (max-width: 3795px) 100vw, 3795px" title="wechat_2024 12 25_214339_818.png" alt="wechat_2024 12 25_214339_818.png" /><figcaption class="wp-element-caption">应用列表1</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3821" height="1937" data-id="5638" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214401_535.png"  class="wp-image-5638" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214401_535.png 3821w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214401_535-1536x779.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214401_535-2048x1038.png 2048w" sizes="auto, (max-width: 3821px) 100vw, 3821px" title="wechat_2024 12 25_214401_535.png" alt="wechat_2024 12 25_214401_535.png" /><figcaption class="wp-element-caption">应用列表2</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3810" height="1592" data-id="5637" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214740_553.png"  class="wp-image-5637" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214740_553.png 3810w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214740_553-1536x642.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214740_553-2048x856.png 2048w" sizes="auto, (max-width: 3810px) 100vw, 3810px" title="wechat_2024 12 25_214740_553.png" alt="wechat_2024 12 25_214740_553.png" /><figcaption class="wp-element-caption">相关文件位置都在一块，管理方便</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3807" height="1811" data-id="5636" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214859_927.png"  class="wp-image-5636" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214859_927.png 3807w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214859_927-1536x731.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_214859_927-2048x974.png 2048w" sizes="auto, (max-width: 3807px) 100vw, 3807px" title="wechat_2024 12 25_214859_927.png" alt="wechat_2024 12 25_214859_927.png" /><figcaption class="wp-element-caption">SSL证书提供商</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="3461" height="1956" data-id="5640" src="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_220310_487.png"  class="wp-image-5640" srcset="https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_220310_487.png 3461w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_220310_487-1536x868.png 1536w, https://img.hjyl.org/uploads/2024/12/wechat_2024-12-25_220310_487-2048x1157.png 2048w" sizes="auto, (max-width: 3461px) 100vw, 3461px" title="wechat_2024 12 25_220310_487.png" alt="wechat_2024 12 25_220310_487.png" /><figcaption class="wp-element-caption">docker容器创建界面</figcaption></figure>
</figure>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br>本文链接: <a rel="bookmark" title="推荐一款LNMP 环境的开源面板——耗子面板" href="https://hjyl.org/lnmp-haozi-panel/">推荐一款LNMP 环境的开源面板——耗子面板</a></span></div>]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/lnmp-haozi-panel/feed/</wfw:commentRss>
			<slash:comments>34</slash:comments>
		
		
			</item>
		<item>
		<title>升级LNMP和FRP</title>
		<link>https://hjyl.org/update-lnmp-frp/</link>
					<comments>https://hjyl.org/update-lnmp-frp/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Fri, 21 Jun 2024 13:22:38 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[frp]]></category>
		<category><![CDATA[http3]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[openresty]]></category>
		<category><![CDATA[后羿面板]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=5158</guid>

					<description><![CDATA[每年6月1日军哥的LNMP（下面简称LNMP）会有版本升级，现在已经到了2.1版本了。然而貌似从LNMP后门事 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>每年6月1日军哥的LNMP（下面简称LNMP）会有版本升级，现在已经到了2.1版本了。然而貌似从LNMP后门事件之后，有传闻LNMP已经被卖掉了，现在更新版本也不知道是谁了。也有人在论坛问过，但军哥一直不解释，不回应。从2.1版本出来之后，我关注过论坛一段时间，军哥露面处理问题的次数越来越低了，或者说很久没出来解决水友的问题了。而且虽然发布2.1版本了，但是论坛版本的同步还是2.0。</p>



<h3 class="wp-block-heading">lnmp2.1主要更新内容</h3>



<p>版本2.1最大的更新内容就是增加PHP 8.3，MySQL 8.4，Nginx http3支持。</p>



<p>PHP版本最新是8.3.8，lnmp可以安装到8.3.7，可以通过升级脚本升级到8.3.8，但是lnmp2.0不能升级到PHP8.3版本，顶多升级到PHP8.2.16。</p>



<p>MySQL 8.4我感觉有点卡，而且还有自动停止的问题，不知道是不是虚拟机内存的问题。所以我不敢着急升级到这个版本。</p>



<p>nginx官方稳定版本更新到1.26.1了，自1.25版本支持http3之后，就是说nginx现在默认支持http3了。当然lnmp2.1也默认支持http3了。但是在nginx配置里http2不能在listen 端口后面加字段了，而且通过http2 on启用，而在lnmp2.1里没有纠正这个问题。</p>



<p>另外lnmp2.1里的升级脚本里，还是之前版本的升级脚本，不能实现2.0到2.1版本的升级，或许军哥认为非必要不升级的原则没有升级这个脚本吧。</p>



<p>所以我也不建议升级2.1版本，等明年这个时候再看看下一个版本吧。</p>



<h3 class="wp-block-heading">nginx升级1.26.1</h3>



<p>nginx升级还是很顺利的，没那么麻烦，升级它主要是因为http3。现在nginx都稳定到这个版本了，http3的普及率肯定会越来越高的。</p>



<p>环境是支持http3了，但是你会发现我的网站还不是http3。个人感觉应该是frp的问题，因为本地架设的网站是可以支持http3的。很奇怪，frp官方quic端口监听配置很简单的，但实际没达到效果，不知道哪里出了问题。另外还有个问题就是据说http3在内网穿透之后不能实现真实IP，所以我也在纠结选择http3还是http2。或许能通过反向代理实现真实IP和http3呢？有待证实！</p>



<h3 class="wp-block-heading">其他环境选择——后羿面板</h3>



<p>除了lnmp，宝塔面板是最受欢迎的环境搭建软件了，但是我却一直不喜欢，我自己都觉得莫名其妙。lnmp很早就开始用了，几乎是刚出来的时候就开始用了，它有完整版，1G多些，安装起来不容易因为网络下载出现问题，如果是国外服务器，直接用默认版本下载也是很快的。宝塔我也试过，面板安装的倒是很快，但是安装环境过程中，因为下载PHP，MySQL耗时太长时间，放弃了。</p>



<p><a href="https://hjyl.org/go/aHR0cHM6Ly93d3cubWlkb2tzLmljdS8=" rel="nofollow" target="_blank">后羿面板</a>，跟宝塔面板一样，但是它更纯净，软件也更新。抱歉，我忘记是哪个博友推荐的了。除了安装软件耗时有点久，其他都还不错。它是基于openresty（我也是第一次听说），而不单是nginx。如果军哥的lnmp坚持不下去了，这也是不错的选择。</p>



<h3 class="wp-block-heading">升级FRP</h3>



<p>自从0.53版本，很久没升级frp了，现在都0.58.1版本了，必须得跟上。升级很简单，覆盖源文件，重启服务即可。</p>



<h3 class="wp-block-heading">升级PHP</h3>



<p>[20240624更新]这几天测试发现用lnmp2.1的升级脚本upgrade.sh可以升级PHP8.2到8.3的版本。然后通过addons.sh升级PHP组件Redis、imageMagick、Exif等等。</p>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br>本文链接: <a rel="bookmark" title="升级LNMP和FRP" href="https://hjyl.org/update-lnmp-frp/">升级LNMP和FRP</a></span></div>]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/update-lnmp-frp/feed/</wfw:commentRss>
			<slash:comments>35</slash:comments>
		
		
			</item>
		<item>
		<title>通过proxy_protocol协议实现真实IP</title>
		<link>https://hjyl.org/proxy-protocol-realip/</link>
					<comments>https://hjyl.org/proxy-protocol-realip/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Wed, 04 Oct 2023 12:30:29 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[frp]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[proxy_protocol]]></category>
		<category><![CDATA[内网穿透]]></category>
		<category><![CDATA[反向代理]]></category>
		<category><![CDATA[真实IP]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=4658</guid>

					<description><![CDATA[说到实现真实IP，之前我用nginx反向代理实现过（点此了解）。操作略微复杂，而且服务端还要求安装nginx， [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>说到实现真实IP，之前我用nginx反向代理实现过（<a href="https://hjyl.org/wordpress-frp-nginx/">点此了解</a>）。操作略微复杂，而且服务端还要求安装nginx，并配置nginx。</p>



<p>我的环境还是那样——通过FRP内网穿透本地lnmp环境。如果是这种情况的话，这应该是最简单实现真实IP的方法——proxy_protocol协议。最先了解的就是这个，可一直没搞明白，搁置了。今天终于搞明白了。</p>



<p>proxy_protocol协议是什么？网上一大堆了，我折腾这么多年，搜了好几个搜索引擎的资料，看最多的就是proxy_protocol的介绍。具体是什么呢？我也不大清楚，反正他能让后端获取客户端的网络信息，也就是IP地址以及TCP端口。它有两种格式——v1和v2，当然现在用的最多的是v2了。</p>



<p>而FRP用proxy_protocol最简单，在穿透的隧道后面加上“proxy_protocol_version = v2”即可。譬如：</p>



<pre class="wp-block-code"><code lang="toml" class="language-toml line-numbers">[liuyuanlin_https]
# 配置 http 访问
type = https
# 本地 Web 服务的端口（与前面的配置一样，都对应同一个 Web 服务）
local_port = 443
# 需要反向代理的域名（当访客通过此域名访问 A 机器时，才会将请求反向代理到此 Web 服务）
custom_domains = liuyuanlin.com, www.liuyuanlin.com
use_encryption=true
use_compression=true
proxy_protocol_version = v2</code></pre>



<p>注意的是，不要再加https2http、https2https这类插件了，因为这类插件就好比nginx的反向代理，会出现502错误。此时你打开网站会出现“ERR SSL PROTOCOL ERROR”的错误，这说明此站流量在走proxy_protocol协议。是正常的。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="472" height="387" src="https://img.hjyl.org/uploads/2023/10/20231004194037.png"  class="wp-image-4659" title="20231004194037.png" alt="20231004194037.png" /><figcaption class="wp-element-caption">“ERR SSL PROTOCOL ERROR”的错误</figcaption></figure>



<p>然后我们配置后端nginx：</p>



<pre class="wp-block-code"><code lang="nginx" class="language-nginx line-numbers">server{

	......
	#listen 端口后面加上proxy_protocol字段，开启Proxy Protocol协议
	listen 12443 ssl http2 proxy_protocol;
	listen [::]:12443 ssl http2 proxy_protocol;
	......

	#proxy_protocol协议头部真实IP
	real_ip_header proxy_protocol;
	real_ip_recursive on;
	set_real_ip_from 127.0.0.1;
	set_real_ip_from 内网IP，公网IP;
	#需要排除的IP，如果你有CDN，可以再加
	...

	#SSL ON
	此处为SSL证书信息，必须得有;
	#SSL END

}</code></pre>



<p>然后重启nginx和frpc服务，搞定！这样默认的REMOTE_ADDR记录的就是客户端的IP了。也不用在wp-config.php多余的配置了。你可以将下面代码保存为.php文件，来测试客户端IP。</p>



<pre class="wp-block-code"><code lang="php" class="language-php line-numbers">&lt;?php
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];             // 客户端与服务器握手IP，如果使用代理则会获取到代理IP
$HTTP_CLIENT_IP = $_SERVER['HTTP_CLIENT_IP'];          // 代理服务器发送的HTTP头（可伪造）
$HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR'];    // 用户是在哪个IP使用的代理（可伪造）
$X_Real_IP = $_SERVER['X-Real-IP'];

echo 'REMOTE_ADDR'.$REMOTE_ADDR.'&lt;br/&gt;';
echo 'HTTP_CLIENT_IP'.$HTTP_CLIENT_IP.'&lt;br/&gt;';
echo 'HTTP_X_FORWARDED_FOR'.$HTTP_X_FORWARDED_FOR.'&lt;br/&gt;';
echo 'X_Real_IP'.$X_Real_IP.'&lt;br/&gt;';
?&gt;</code></pre>



<p>总之呢，现在你不用花昂贵的价钱买阿里云、腾讯云、天翼云、京东云服务器了，只需要花十分之一的价钱买FRP服务或者免费的FRP服务就可以穿透自己本地搭建的网站了。</p>



<p>在此，感谢<a href="https://hjyl.org/go/aHR0cHM6Ly9nb2ZycC5vcmc=" rel="nofollow" target="_blank">FRP</a>、<a href="https://hjyl.org/go/aHR0cHM6Ly9wcm9mYW4uY24=" rel="nofollow" target="_blank">老朱</a>、<a href="https://hjyl.org/go/aHR0cHM6Ly93d3cuYWxhaW5sYW0uY24vP3A9NDAz" rel="nofollow" target="_blank">alain lam</a>、<a href="https://hjyl.org/go/aHR0cHM6Ly9iYnMubG5tcC5jb20vdGhyZWFkLTI2Nzc3LTEtMi5odG1s" rel="nofollow" target="_blank">军哥LNMP</a>以及网络肯分享技术的大佬们！希望此文可以帮助曾经跟我一样糊涂的童鞋们。</p>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br>本文链接: <a rel="bookmark" title="通过proxy_protocol协议实现真实IP" href="https://hjyl.org/proxy-protocol-realip/">通过proxy_protocol协议实现真实IP</a></span></div>]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/proxy-protocol-realip/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title>WordPress+FRP内网穿透+Nginx反向代理</title>
		<link>https://hjyl.org/wordpress-frp-nginx/</link>
					<comments>https://hjyl.org/wordpress-frp-nginx/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Fri, 01 Sep 2023 15:02:11 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[frp]]></category>
		<category><![CDATA[HSTS]]></category>
		<category><![CDATA[HTTP/2]]></category>
		<category><![CDATA[LNMP]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[内网穿透]]></category>
		<category><![CDATA[反向代理]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=4586</guid>

					<description><![CDATA[昨晚手欠，想升级小主机的服务器系统，将exsi里的fedora系统移动到第二个硬盘里，我是先关了系统再移动的， [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>昨晚手欠，想升级小主机的服务器系统，将exsi里的fedora系统移动到第二个硬盘里，我是先关了系统再移动的，结果还是出现无法转移的情况，导致系统无法转移回去了。无奈只能重装系统了。借此机会，重装最新版本的fedora38和lnmp2.0系统。</p>



<p>好在我留了个心眼，先备份了服务器里所有的网站。备份到群晖里速度还是可以的，全程大概16分钟，8G数据。而恢复到新安装的服务器里，时间有点长，单单从群晖ftp到服务器里的数据就花了1个多小时了。</p>



<p>今天找了款能试用一个月的VPS——京东云，从网上找了相关资料，终于搞定了内网穿透+反向代理+HSTS+HTTP/2+真实IP。</p>



<p>首先思路是这样的：frps（服务端）所在的服务器是公网服务器，frpc（客户端）所在的服务器是本地内网服务器，内网服务器安装lnmp和WordPress博客，公网服务器只需要安装nginx，用来做反向代理。我们通过“https//域名”访问公网服务器默认端口443，其所在nginx反向代理到frps的vhost_http_port非80端口，而frps连接到frpc服务器的http服务。</p>



<figure class="wp-block-image size-full"><a href="https://img.hjyl.org/uploads/2023/09/WordPress-FRP-Nginx.png"><img loading="lazy" decoding="async" width="1272" height="638" src="https://img.hjyl.org/uploads/2023/09/WordPress-FRP-Nginx.png"  class="wp-image-4588" title="WordPress FRP Nginx.png" alt="WordPress FRP Nginx.png" /></a><figcaption class="wp-element-caption">WordPress+FRP内网穿透+Nginx反向代理</figcaption></figure>



<p>其次再说说具体配置，frp的相关配置可以参考我曾经的两篇文章：<a href="https://hjyl.org/frp-nginx/">记录FRP+NGINX内网穿透</a>和<a href="https://hjyl.org/frp-2/">FRP内网穿透·续</a>，或者参考官网配置文件<a href="https://hjyl.org/go/aHR0cHM6Ly9naXRodWIuY29tL2ZhdGVkaWVyL2ZycC9ibG9iL2Rldi9jb25mL2ZycHNfZnVsbC5pbmk=" rel="nofollow" target="_blank">frps_full.ini</a>和<a href="https://hjyl.org/go/aHR0cHM6Ly9naXRodWIuY29tL2ZhdGVkaWVyL2ZycC9ibG9iL2Rldi9jb25mL2ZycGNfZnVsbC5pbmk=" rel="nofollow" target="_blank">frpc_full.ini</a>，这个比较完整。</p>



<p>然后是nginx反向代理配置：</p>



<pre class="wp-block-code"><code class="">    server {
        listen 443 ssl http2;
        server_name  hjyl.org;
        ssl_certificate "vhost/hjyl.org.crt";
        ssl_certificate_key "vhost/hjyl.org.key";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置，配置加密套件，写法遵循 openssl 标准。
	ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;

        add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
	#开启 HSTS，并设置有效期为“31536000 秒”（一年），包括子域名(根据情况可删掉)，预加载到浏览器缓存(根据情况可删掉)

        location / {
            proxy_pass  http://hjyl.org:9527;
            # 反向代理到vhost_http_port端口
            proxy_redirect default;
            # 保证获取到真实IP
            proxy_set_header X-Real-IP $remote_addr;
            # 真实端口号
            proxy_set_header X-Real-Port $remote_port;
            # X-Forwarded-For 是一个 HTTP 扩展头部。
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # 在多级代理的情况下，记录每次代理之前的客户端真实ip 
            proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
            # 获取到真实协议
            proxy_set_header X-Forwarded-Proto $scheme;
            # 真实主机名
            proxy_set_header Host $host;
            # 设置变量
            proxy_set_header X-NginX-Proxy true; 
        }
}</code></pre>



<p>最后重点来了，上面这样如果内网穿透的链接打开正常，你通过“https://域名”可以打开WordPress博客，但是样式表却丢失了，打开源代码，你可以看到WordPress的网址是“http://域名”，主要是WordPress跟其他网站不同，它后台是绑定网址的，使用的是绝对路径。此时我们需要在wp-config.php里加入以下代码（此代码由<a href="https://hjyl.org/go/aHR0cHM6Ly9jaGVuamllaHVhLm1lL2xpbnV4L25naW54LXByb3h5LXdvcmRwcmVzcy5odG1s" rel="nofollow" target="_blank">ChenJieHua</a>分享）：</p>



<pre class="wp-block-code"><code class="">if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &amp;&amp; $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
	$_SERVER['HTTPS'] = 'on';
} </code></pre>



<p>2024.07.18更新：如果上面这段代码不管用，可以直接用下面这个代码：</p>



<pre class="wp-block-code"><code class="">$_SERVER["HTTPS"] = "on";</code></pre>



<p>（此代码由<a href="https://hjyl.org/go/aHR0cHM6Ly9pdGxhbnlhbi5jb20vd29yZHByZXNzLWJlaGluZC1wcm94eS8=" rel="nofollow" target="_blank">tlanyan</a>分享）不知道是不是版本升级的原因，之前上述代码是正常的。</p>



<p>这样你再打开网址就正常了。</p>



<p>但是此时你的评论上IP还不是客户的真实IP，虽然我们再nginx里配置了，我们还需要在WordPress里配置一下，同样在wp-config.php加入以下代码（此代码由<a href="https://hjyl.org/go/aHR0cDovL2ltLmFjaXJuby5jb20vNDQyNC5odG1s" rel="nofollow" target="_blank">JUST FOR FUN</a>分享）：</p>



<pre class="wp-block-code"><code class="">  if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
	$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
	$_SERVER['REMOTE_ADDR'] = $list[0];
  }</code></pre>



<p>或者</p>



<pre class="wp-block-code"><code class="">if( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$get_HTTP_X_FORWARDED_FOR = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = trim($get_HTTP_X_FORWARDED_FOR[0]);
}</code></pre>



<p>到此，效果就出来了！不过我觉得这种还是太复杂了。如果直接frp里设置出nginx反向代理的效果就好了，毕竟frp本身也是一直反向代理嘛！</p>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br>本文链接: <a rel="bookmark" title="WordPress+FRP内网穿透+Nginx反向代理" href="https://hjyl.org/wordpress-frp-nginx/">WordPress+FRP内网穿透+Nginx反向代理</a></span></div>]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/wordpress-frp-nginx/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>记录FRP+NGINX内网穿透</title>
		<link>https://hjyl.org/frp-nginx/</link>
					<comments>https://hjyl.org/frp-nginx/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Thu, 14 Oct 2021 04:11:46 +0000</pubDate>
				<category><![CDATA[元林手札]]></category>
		<category><![CDATA[frp]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[内网穿透]]></category>
		<category><![CDATA[反向代理]]></category>
		<guid isPermaLink="false">https://hjyl.org/?p=4078</guid>

					<description><![CDATA[一直以来的想法，本地架设服务器，直接通过域名访问即可。 就是这样如此简单的想法需要花费很多钱、技术和时间。其实 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>一直以来的想法，本地架设服务器，直接通过域名访问即可。</p>
<p>就是这样如此简单的想法需要花费很多钱、技术和时间。其实现在的网站搭建已经是很简单了，空间+域名搞定！可因为电信网络的问题，我们的宽带不能直接被外网访问，而且更可恶的是还封闭了我们的80端口和443端口。所以即便我们的网络被外网访问，也不能直接访问，还得加个端口。这样多难看啊！曾几何时，尝试了多少次，如今才勉强搞定一个站点。</p>
<p>如今在网络上说到内网穿透，frp成了代名词。也确实，frp做内网穿透确实很专业。可惜官网的配置我就是看不懂，一定是的技术不专业！查了很多资料，慢慢尝试才搞定了，这种心情很难用言语形容的。</p>
<p>好了，现在说说我咋做到的！</p>
<p>首先，我们需要几个条件：域名（liuyuanlin.com）、服务器（可以支持Nginx反向代理，所以vps这种最好了，空间应该不行吧）、本地架设服务器（这个简单，很多软件都可以做到）、frp软件（免费开源的，放心使用，<a href="https://hjyl.org/go/aHR0cHM6Ly9nb2ZycC5vcmcvZG9jcy8=" rel="nofollow" target="_blank">frp内网穿透官网</a>）。</p>
<p>其次，配置服务端。<br />
服务端是外网服务器，也就是可以直接被外网访问的vps。<br />
在frp软件里，frps是服务端，frps.ini是配置文件，我们只需要编辑这个文件即可。</p>
<blockquote><p>[common]<br />
bind_port = 7000        #监听服务端端口，这个必须要和客户端配置里的server_port端口一致<br />
token = 123456          #token验证，这个必须是和客户端一致<br />
vhost_http_port = 8080  #这个是监听http的端口，下面需要设置的端口跟这个一样<br />
vhost_https_port = 9999 #这个是监听https的端口，下面需要设置的端口跟这个一样<br />
log_file = ./frps.log   #这个是错误日志的存储位置<br />
log_level = info        #这个是显示错误日志的类型，trace, debug, info, warn, error这几个可以选一个<br />
log_max_days = 7        #这个顾名思义，存储日志最长天数
</p></blockquote>
<p>vps我用的是阿里云ecs，缺点是需要备案，如果你用国外的或者香港的，那就不需要备案了。为了不影响其他站点，我装了lnmp，这样添加一个主机空间，修改对应的.conf配置也就不影响了。</p>
<blockquote><p>server {<br />
    listen 80;<br />
    listen 443 ssl;<br />
    server_name liuyuanlin.com www.liuyuanlin.com;<br />
	root  /wwwroot/liuyuanlin.com;<br />
	index index.html index.htm index.php default.html default.htm default.php;<br />
		ssl_certificate /wwwroot/keys/liuyuanlin.com.crt;       #如果证书和此配置文件不在同一目录，需写上路径，例如/home/wwwroot/ssl.pem<br />
		ssl_certificate_key /wwwroot/keys/liuyuanlin.com.key;   #同上<br />
		ssl_session_timeout 5m;</p>
<p>		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;<br />
		ssl_protocols SSLv2 SSLv3 TLSv1;<br />
		ssl_prefer_server_ciphers on;</p>
<p>    location / {<br />
        proxy_pass  http://127.0.0.1:8080;    #这个端口很重要，填写frps配置文件里的vhost_http_port端口<br />
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
        proxy_set_header Host $http_host;<br />
        proxy_set_header X-NginX-Proxy true;<br />
        proxy_http_version 1.1;<br />
        proxy_set_header Upgrade $http_upgrade;<br />
        proxy_set_header Connection "upgrade";<br />
        proxy_max_temp_file_size 0;<br />
        proxy_redirect off;<br />
        proxy_read_timeout 240s;<br />
    }</p>
<p>    error_page   500 502 503 504  /50x.html;<br />
    location = /50x.html {<br />
        root   /usr/share/nginx/html;<br />
    }<br />
}</p></blockquote>
<p>这个反向代理配置很关键，道理就是要将我们监听的8080端口，也就是本地服务器的8080端口映射到外网的80端口，这样就不用再域名后面加端口那么难看了。<br />
lnmp restart重启lnmp，./frps -c ./frps.ini 启动服务端。</p>
<p>第三，配置客户端。<br />
客户端就是我们的本地服务器，不能被外网访问的可怜的服务器。如果你的内网有公网动态或者静态IP，那就不需要内网穿透了。<br />
在frp软件里frpc是内网客户端软件，frpc.ini是配置文件，编辑此文件：</p>
<blockquote><p>[common]<br />
# 这里填写 服务端 机器的 IP 或者域名<br />
server_addr = X.X.X.X<br />
# 填写 服务端 机器开放的 frp 服务端口，也就是 frps.ini 配置文件中 bind_port 的值<br />
server_port = 7000<br />
token = 123456</p>
<p>[liuyuanlin_http]<br />
# 依然支持 http 访问<br />
type = http<br />
# 本地 Web 服务的端口<br />
local_port = 8080<br />
# 需要反向代理的域名（当访客通过此域名访问 A 机器时，才会将请求反向代理到此 Web 服务）<br />
custom_domains = liuyuanlin.com, www.liuyuanlin.com</p>
<p>[liuyuanlin_https]<br />
# 配置 https 访问<br />
type = https<br />
# 本地 Web 服务的端口（与前面的配置一样，都对应同一个 Web 服务）<br />
local_port = 9999<br />
# 需要反向代理的域名（当访客通过此域名访问 A 机器时，才会将请求反向代理到此 Web 服务）<br />
custom_domains = liuyuanlin.com, www.liuyuanlin.com</p>
<p># 接下来的配置是支持 https 的重点配置<br />
# 配置插件，将 https 请求转换成 http 请求后再发送给本地 Web 服务程序<br />
plugin = https2http<br />
# 转换成 http 后，发送到本机的 9999端口<br />
plugin_local_addr = 127.0.0.1:9999<br />
# 可能是 frp 的 Bug？这里必须写成 127.0.0.1，稍后解释<br />
plugin_host_header_rewrite = 127.0.0.1<br />
# 指定代理方式为 frp<br />
plugin_header_X-From-Where = frp<br />
# 指定成你在前面部分导出的证书的路径<br />
plugin_crt_path = /wwwroot/keys/liuyuanlin.com.crt<br />
plugin_key_path = /wwwroot/keys/liuyuanlin.com.key</p></blockquote>
<p>而客户端的服务器Nginx不需要怎么配置，只是把端口设置为服务端监听的端口即可。譬如：</p>
<blockquote><p>server {<br />
    listen 8080;<br />
    listen 9999 ssl;<br />
	............<br />
}</p></blockquote>
<p>因为我本地架设的服务器也是lnmp，所以直接用lnmp restart重启lnmp即可，./frpc -c ./frpc.ini 启动客户端。<br />
如果需要在后台长期运行，建议结合其他工具使用，例如 systemd 和 supervisor，这个frp软件里都有。</p>
<p>最后，有兴趣的朋友试试吧！这些配置只不过根据网上大神的经验修改而来的，或许代码可以更加精炼。请多多指教！<br />
这样的话，我们服务端的主机就不需要很高的配置了，只要能正常运行Nginx就可以了。所以流量不高的朋友，可以尝试定制vps主机，把带宽设置高一些，访问的速度就快多了。</p>
<p><strong>最最最后，本文介绍的反向代理如果不好弄，本人也放弃了，可以看<a href="https://hjyl.org/frp-2/">这篇文章</a>，比较直接！</strong></p>
<hr/>
<p>在网上找到一个方法，本站未测试，但对方测试了，看起来貌似很有用。记录下来或许以后会用到。</p>
<h3>第一步：修改服务器中nginx.conf配置文件</h3>
<p>在nginx.conf中http{ }里添加以下参数<br />
<code><br />
    server {<br />
    listen 80;<br />
    server_name xiaoyue.ml www.xiaoyue.ml;<br />
    location / {<br />
    proxy_pass http://127.0.0.1:8080;<br />
    proxy_redirect http://$host/ http://$http_host/;<br />
    proxy_set_header X-Real-IP $remote_addr;<br />
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
    proxy_set_header Host $host;<br />
    }<br />
    }<br />
</code><br />
如下图，设置好后保存，重启nginx</p>
<p><figure id="attachment_4185" aria-describedby="caption-attachment-4185" style="width: 677px" class="wp-caption alignnone"><a href="https://img.hjyl.org/uploads/2021/10/f125e-2020032403534447.jpeg"><img loading="lazy" decoding="async" src="https://img.hjyl.org/uploads/2021/10/f125e-2020032403534447.jpeg" alt="FRP+nginx反向代理" width="677" height="617" class="size-full wp-image-4185" title="f125e 2020032403534447.jpeg" /></a><figcaption id="caption-attachment-4185" class="wp-caption-text">FRP+nginx反向代理</figcaption></figure></p>
<h3>第二步：修改frp服务端配置文件</h3>
<p>既然反向代理到了8080端口，那么frp服务端的配置文件也需要进行设置</p>
<p>frps.ini配置文件中vhost_http_port = 8080端口<br />
<figure id="attachment_4186" aria-describedby="caption-attachment-4186" style="width: 298px" class="wp-caption alignnone"><a href="https://img.hjyl.org/uploads/2021/10/1cd44-2020032403534674.jpeg"><img loading="lazy" decoding="async" src="https://img.hjyl.org/uploads/2021/10/1cd44-2020032403534674.jpeg" alt="frps配置" width="298" height="134" class="size-full wp-image-4186" title="1cd44 2020032403534674.jpeg" /></a><figcaption id="caption-attachment-4186" class="wp-caption-text">frps配置</figcaption></figure></p>
<h3>第三步：修改frp客户端配置文件</h3>
<p>第一步配置中：server_name xiaoyue.ml www.xiaoyue.ml; 这里填写对应域名。</p>
<p>也支持泛解析，例如：server_name *.xiaoyue.ml;需要域名同时进行泛解析才行。</p>
<p>那么frpc.ini怎么修改呢，很简单</p>
<p>对应穿透服务配置里配置好对应域名，custom_domains = xiaoyue.ml</p>
<p><a href="https://img.hjyl.org/uploads/2021/10/e907b-2020032403534785.jpeg"><img loading="lazy" decoding="async" src="https://img.hjyl.org/uploads/2021/10/e907b-2020032403534785.jpeg"  width="515" height="139" class="alignnone size-full wp-image-4187" title="e907b 2020032403534785.jpeg" alt="e907b 2020032403534785.jpeg" /></a></p>
<h3>第四步：</h3>
<p>服务器中重启frps，本地电脑中启动frpc，就可以在浏览器中通过80端口直接访问xiaoyue.ml了。</p>
<p>xiaoyue.ml是解析到我的服务器中，而这个网站是搭建在局域网里面我自己的电脑中。</p>
<p>也就是首先保证你电脑上访问127.0.0.1，是有内容的哦。</p>
<p>其实本文核心就一步，那就是将比如你访问xiaoyue.ml(默认情况下，我们访问网站都是80端口)，反向代理到xiaoyue.ml:8080端口而已。</p>
<p>那这样做有什么意义呢，就是想直接通过域名访问，而不是通过域名:端口号访问网站。</p>
<p>此方法由http://blog.hux6.com/archives/326.html分享。</p>
<div id="content-copyright"><span style="font-weight:bold;text-shadow:0 1px 0 #ddd;font-size: 13px;">版权声明: </span><span style="font-size: 13px;">本文采用 <a href="https://hjyl.org/go/aHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLXNhLzMuMC8=" rel="nofollow" target="_blank">BY-NC-SA</a> 协议进行授权，如无注明均为原创，转载请注明转自 <a href="https://hjyl.org">皇家元林</a><br />本文链接: <a rel="bookmark" title="记录FRP+NGINX内网穿透" href="https://hjyl.org/frp-nginx/">记录FRP+NGINX内网穿透</a></span></div>
]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/frp-nginx/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
	</channel>
</rss>
