本地虚拟机搭建子比后如何配置映射到公网IP用https来访问

一、核心问题:你踩了 WordPress 最经典的「域名切换死循环」坑

你把 siteurl/homehttp://192.168.10.108:8084 改成 https://sc.frp.yelingai.icu 后:

  • 本地用 IP 访问:WordPress 会强制跳转到域名(因为 siteurl 是域名),而本地没走公网/没配 Hosts,直接打不开
  • 公网用域名访问:如果反向代理/FRP 配置有一点偏差,就会出现 404、重定向循环、后台打不开

二、分场景解决,两种方案二选一

方案1:保留域名配置,让本地IP也能访问(推荐,兼顾公网+本地调试)

1. 先恢复本地IP访问(救急)

wp-config.php追加这几行代码(不要删之前的域名配置):

<?php
// 保留你之前的域名配置define('FORCE_SSL_ADMIN', false);
define('WP_HOME', 'https://sc.frp.yelingai.icu');
define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
// 如果不想让域名访问后端,就可以去掉这行代码
// define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
define('FORCE_SSL_ADMIN', false);
// 这里设置了true,本地IP访问后端就不能访问,所以设置为false,define('FORCE_SSL_ADMIN', false););

// 新增:自动识别访问方式,本地用IP,公网用域名
if (strpos($_SERVER['HTTP_HOST'], '192.168.10.108') !== false) {
    define('WP_HOME', 'http://192.168.10.108:8084');
    define('WP_SITEURL', 'http://192.168.10.108:8084');
}

// 保留HTTPS识别代码
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

// 下面是原数据库配置,不动

效果:

  • 本地访问 http://192.168.10.108:8084/wp-admin → 自动用IP地址,正常打开
  • 公网/本机访问 https://sc.frp.yelingai.icu/wp-admin → 自动用域名,正常打开
  • 完美兼容两种访问方式,不用改数据库,不用换Hosts

2. 给本机配Hosts,实现「域名本地秒开」(最优体验)

在你**物理机(本机)**的 C:\Windows\System32\drivers\etc\hosts 里加一行:

192.168.10.108  sc.frp.yelingai.icu

效果:

  • 本机访问 https://sc.frp.yelingai.icu → 直接指向虚拟机本地,不走公网,秒开后台
  • 公网用户访问 → 正常走FRP穿透,不受影响
  • 彻底解决「本地IP打不开、域名公网慢」的问题

方案2:彻底切回本地IP,只在本地用(不推荐,放弃公网)

如果只是本地调试,不想用公网域名,直接改回:

  1. wp-config.php 里把 WP_HOME/WP_SITEURL 改回 http://192.168.10.108:8084
  2. 数据库 wp_options 表的 siteurl/home 也改回IP
  3. 公网反向代理/FRP 全部停用,只在本地访问

三、为什么会出现「改了域名本地IP就打不开」?

WordPress 的核心逻辑:

siteurl/home 是网站的唯一官方地址,所有访问都会强制跳转到这个地址。

  • 你填了域名:所有访问(包括本地IP)都会被强制跳转到域名
  • 本地没配Hosts/没走公网:访问域名时,浏览器找不到服务器,直接打不开
  • 公网配置有偏差:跳转到域名后,反向代理没正确转发,后台404

四、给你的最终最优配置(直接照抄)

1. wp-config.php 最终版(完美兼容本地+公网)

<?php
// 自动适配本地IP和公网域名,二选一自动生效
if (strpos($_SERVER['HTTP_HOST'], '192.168.10.108') !== false) {
    define('WP_HOME', 'http://192.168.10.108:8084');
    define('WP_SITEURL', 'http://192.168.10.108:8084');
} else {
    define('WP_HOME', 'https://sc.frp.yelingai.icu');
    define('WP_SITEURL', 'https://sc.frp.yelingai.icu');
}

define('FORCE_SSL_ADMIN', false);

// 解决反向代理HTTPS识别问题
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

// 下面是原有的数据库配置,不要动

2. 本机Hosts配置(必须加)

192.168.10.108  sc.frp.yelingai.icu

3. 反向代理配置(你现在的是对的,不用改)

  • 目标URL:http://127.0.0.1:58084(FRP映射的服务器端口)
  • 发送域名:$http_host(自动透传域名,完美适配)

五、验证效果

  1. 本地虚拟机:访问 http://192.168.10.108:8084/wp-admin → 正常打开
  2. 物理机(本机):访问 https://sc.frp.yelingai.icu/wp-admin → 本地秒开,不走公网
  3. 公网用户:访问 https://sc.frp.yelingai.icu/wp-admin → 正常穿透访问

六、一句话总结

用「自动识别访问方式」的 wp-config.php 代码,配合本机Hosts映射,完美解决「改了域名本地IP打不开、公网后台访问异常」的问题,本地调试和公网访问两不误。

需要我帮你把这个代码直接适配到你当前的 wp-config.php,生成一份可以直接复制的完整版本吗?

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容