<?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>反向代理相关文章列表 | 皇家元林</title>
	<atom:link href="https://hjyl.org/tags/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/feed/" rel="self" type="application/rss+xml" />
	<link>https://hjyl.org</link>
	<description>刘元林的个人博客</description>
	<lastBuildDate>Thu, 18 Jul 2024 15:35:47 +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>反向代理相关文章列表 | 皇家元林</title>
	<link>https://hjyl.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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 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 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>
		<item>
		<title>俺博客速度是否快了呢？</title>
		<link>https://hjyl.org/my-blog-speed-fast/</link>
					<comments>https://hjyl.org/my-blog-speed-fast/#comments</comments>
		
		<dc:creator><![CDATA[皇家元林]]></dc:creator>
		<pubDate>Fri, 21 Oct 2011 13:28:29 +0000</pubDate>
				<category><![CDATA[生活点滴]]></category>
		<category><![CDATA[CDN加速]]></category>
		<category><![CDATA[CloudFlare]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[免费CDN]]></category>
		<category><![CDATA[反向代理]]></category>
		<guid isPermaLink="false">http://hjyl.org/?p=1962</guid>

					<description><![CDATA[俺博客速度是否快了呢？
今天没事折腾了CDN，给我的博客皇家元林添加了CloudFlare的免费CDN，感觉还不错吧，CDN加速还真不是盖的，朋友们，赶紧来看看，测测吧！]]></description>
										<content:encoded><![CDATA[<p>今天无意中捣鼓了一下CDN，这玩意早就出来了，我也一直没接触，感觉好像很难，而且最重要的是大部分是收费的。不过网络的素材多啊，免费的地位无可取代，听说<a href="https://hjyl.org/go/aHR0cDovL3d3dy5jbG91ZGZsYXJlLmNvbQ==" rel="nofollow" target="_blank">CloudFlare</a>的免费CDN不错，世界各地都有他的节点。不知道是它本身流量太大，还是G.F.W的嫉妒，它会经常无法访问，不过多刷新几次就好了。目前为止，貌似这个问题不影响CDN加速的使用。</p>
<p>我用网站工具ping了一下：如图，<br />
<a href="https://hjyl.org/go/aHR0cDovL2kuNi5jbi9jdmJubS8yMi9lZS8yZi9mNzdlZTJkMmIzNGZhOTAxOTUyOTNhNWNjNzgxMDhjNy5wbmc=" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" title="Click to enlarge" src="http://i.6.cn/cvbnm/22/ee/2f/f77ee2d2b34fa90195293a5cc78108c7.png" alt="image" width="470" height="374" /></a></p>
<div id="caption_1319201931761" class="highslide-caption">我的博客CDN加速之后</div>
<p><a href="https://hjyl.org/go/aHR0cDovL2kuNi5jbi9jdmJubS8xNy8wMy84My9hYzQwZDBhMzk3YWQxNzE5MDczMmQyMDIxMjE0NTE1ZS5wbmc=" rel="nofollow" target="_blank"><img loading="lazy" decoding="async" title="Click to enlarge" src="http://i.6.cn/cvbnm/17/03/83/ac40d0a397ad17190732d2021214515e.png" alt="image" width="471" height="385" /></a></p>
<div id="caption_1319202171793" class="highslide-caption">W7C未CDN加速</div>
<p>好吧，我承认我的VPS本来速度就还不错。从这两张图好像看不到有什么明显的速度，甚至还慢了一些似的。不过从我宿舍的长城宽带来看，好像速度有明显提高。我最欣赏的就是它的CSS、图片和js缓存，像我们wordpress，有这三个就不错了，如果你把整个网站静态化，注意是全站静态化，那速度应该更明显。还有这个CDN加速还有个WordPress插件，在后台可以直接搜到并应用，它可以优化你的数据库，从而使之更加速，哇喔，真是一把神器！</p>
<p>还有个效果我非常喜欢，从上图你可以看到二者的IP，不一样了！CloudFlare是通过服务器的反向代理来加速的，所以这个就等于间接的隐藏了我的真实IP。而且我相信在世界不同的地方，节点的不同，IP也会不同的。不过有个问题，不知道是CDN的问题还是我的VPS的问题，现在FTP连不上了。在CloudFlare里有项免费的服务CodeGuard—免费通过FTP备份你的网站，我的就用不了。也许是VPS的问题吧，感觉lnmp0.7没0.6版本成熟稳定。</p>
<p>额，说归说，说的不对，人家就会告你诽谤，那就不值了。关键还得看后期的效果和稳定性，如果那一天兲朝觉得这影响他们的利益，他们会毫不犹豫地果断地剔除！目前CloudFlare对这个CDN加速没什么限制，这就是最大的优点，在这个神奇的国度里是找不到的。好了，毛主席曾经说过，实践是检验真理的唯一标准，还是得看效果。那么你觉得我的博客速度是否快了呢？</p>
<p><span style="color: #008000;">//2011年10月25日更新记录，CloudFlare在随机时候（不确定时间里）会让你的网站跳转到一个页面，你需要输入验证码才可以正常访问，同时这个页面有好几个广告！</span></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="俺博客速度是否快了呢？" href="https://hjyl.org/my-blog-speed-fast/">俺博客速度是否快了呢？</a></span></div>
]]></content:encoded>
					
					<wfw:commentRss>https://hjyl.org/my-blog-speed-fast/feed/</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
	</channel>
</rss>
