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

Nginx配置:Drupal站点子域名代理至主域名路径且不跳转

实现user.redangus.org透明代理redangus.org/user的Nginx配置方案

这个需求本质是要做域名到特定路径的反向代理,同时适配Drupal的路由机制,避免它自动触发重定向。我之前帮同事调过几乎一模一样的配置,给你拆解关键步骤:

1. 配置Nginx的server块(核心)

针对user.redangus.org新建一个server块,通过反向代理把请求转发到原站点的/user路径,同时修改请求头让Drupal“误以为”请求来自原站点,从而避免重定向。

完整配置示例:

server {
    listen 80;
    listen [::]:80;
    server_name user.redangus.org;

    # 如果你的站点用HTTPS,取消下面的注释并配置证书路径
    # listen 443 ssl http2;
    # listen [::]:443 ssl http2;
    # ssl_certificate /etc/nginx/ssl/user.redangus.org.crt;
    # ssl_certificate_key /etc/nginx/ssl/user.redangus.org.key;

    location / {
        # 关键:proxy_pass末尾的斜杠不能少!否则URI拼接会出错
        proxy_pass http://redangus.org/user/;
        
        # 强制修改Host头为原站点域名,这是避免Drupal重定向的核心
        proxy_set_header Host redangus.org;
        
        # 传递客户端真实IP和协议,适配Drupal的日志和安全模块
        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;

        # 关闭自动重定向,确保URL保持不变
        proxy_redirect off;
        
        # 禁用压缩,避免代理后资源加载异常
        proxy_set_header Accept-Encoding "";
        
        # 调整超时时间,适配Drupal后台的长操作
        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

2. 调整Drupal的信任域名配置

打开Drupal根目录下的sites/default/settings.php,添加user.redangus.org到信任域名列表,否则Drupal会拒绝来自这个域名的请求:

$settings['trusted_host_patterns'] = [
  '^redangus\.org$',
  '^user\.redangus\.org$',
];

3. 测试与排坑

  • 重启Nginx使配置生效:sudo systemctl restart nginx
  • 清除浏览器缓存(或用隐私模式访问),检查user.redangus.org是否正常显示redangus.org/user的内容,且URL无跳转
  • 如果仍出现重定向,检查原站点redangus.org的Nginx配置,看是否有强制跳转到www、HTTPS的规则影响了代理请求;另外可以查看Drupal的日志(sites/default/logs),排查路由相关的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:57:35