You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX反向代理:能否将https://my.org/service1映射至http://localip:1234/?

解决反向代理子路径到服务根路径的页面失效问题

核心问题原因

内部服务(WordPress/Nextcloud等)默认基于自身根路径(/)生成页面资源链接、API路由和跳转地址,但外部访问时是通过/service1子路径,浏览器会错误地请求https://my.org/xxx而非https://my.org/service1/xxx,导致页面元素加载失败、链接失效。

步骤1:配置反向代理NGINX

在Docker部署的NGINX配置文件中,添加以下location块,确保正确传递请求头并处理路径映射:

location /service1 {
    # 反向代理到内部服务地址,注意末尾不要加/,否则会丢失子路径前缀
    proxy_pass http://localip:1234;
    
    # 传递必要的请求头,让内部服务识别真实访问地址和协议
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # 可选:如果服务未配置子路径,用sub_filter替换响应中的根路径(需NGINX开启sub模块)
    sub_filter 'href="/' 'href="/service1/';
    sub_filter 'src="/' 'src="/service1/';
    sub_filter 'action="/' 'action="/service1/';
    sub_filter_once off;
}

注意:Docker官方NGINX镜像默认已包含ngx_http_sub_module模块,若使用自定义镜像需确保编译时添加该模块。

步骤2:调整内部服务的子路径配置

优先通过服务自身配置适配子路径,比sub_filter更稳定可靠:

WordPress配置

修改wp-config.php文件,添加以下内容:

define('WP_HOME', 'https://my.org/service1');
define('WP_SITEURL', 'https://my.org/service1');
define('FORCE_SSL_ADMIN', true);

进入WordPress后台「设置-固定链接」页面,点击保存以刷新路由规则。

Nextcloud配置

修改config/config.php文件,添加或修改以下参数:

'overwrite.cli.url' => 'https://my.org/service1',
'overwritewebroot' => '/service1',
'overwriteprotocol' => 'https',
'htaccess.RewriteBase' => '/service1',

执行Nextcloud命令更新重写规则:

docker exec -it <nextcloud容器名> php occ maintenance:update:htaccess

验证配置

  1. 重启Docker中的NGINX容器:docker restart <nginx容器名>
  2. 访问https://my.org/service1,检查页面资源、链接是否正常加载
  3. 若仍有问题,打开浏览器开发者工具(F12)查看「网络」标签中失败的请求路径,补充sub_filter规则或调整服务配置。

内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:17:26