<?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>HTTP/2相关文章列表 | 皇家元林</title>
	<atom:link href="https://hjyl.org/tags/http-2/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>HTTP/2相关文章列表 | 皇家元林</title>
	<link>https://hjyl.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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>
	</channel>
</rss>
