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

如何通过Nginx配置实现子域名掩码,隐藏浏览器地址栏子域名

实现方案

你当前使用的307客户端重定向规则会触发浏览器地址栏自动更新为子域名,是跳转后地址变化的核心原因。要实现子域名掩码效果(地址栏始终保留主域名,移动端服务正常响应),只需取消客户端跳转逻辑,改为服务端内部根据UA将请求转发到移动端上游服务即可。

具体修改步骤

  1. 调整主域名443端口server块的匹配逻辑,移除307跳转规则,改为内部代理
  2. 按需设置代理请求的Host头,保证移动端服务能正常识别请求
  3. 可选:限制mobile.mydomain公网访问权限,避免用户直接访问子域名

修改后的配置示例

server {
    listen         80;
    server_name    mydomain;
    return         301 https://$server_name$request_uri;
}
include mime.types;
server {
    listen 443 ssl;
    server_name mydomain;
    ssl_certificate /etc/ssl/CA_Bundle.ca-bundle;
    ssl_certificate_key /etc/ssl/2021/server.key;
    location / {
        add_header Access-Control-Allow-Origin *;
        proxy_redirect off;
        expires off;
        set $agentflag 0;
        set $upstream_addr http://172.17.0.1:8080;
        set $upstream_host $host;
        if ( $http_user_agent ~* "(Mobile)" ){
            set $agentflag 1;
        }
        if ($request_uri ~ "user-agent"){
            set $agentflag 0;
        }
        if ( $agentflag = 1 ) {
            rewrite ^/(.*)/$ /$1 break; # 内部重写,不触发客户端跳转
            set $upstream_addr http://172.17.22.1:8081;
            # 若移动端服务需要绑定Host为mobile.mydomain则取消下一行注释
            # set $upstream_host mobile.mydomain;
        }
        proxy_set_header Host $upstream_host;
        proxy_pass $upstream_addr;
        # 若移动端服务存在返回Location指向子域名的情况,添加以下规则改写跳转
        # proxy_redirect https://mobile.mydomain/ /;
    }
}
# 若不再需要对外暴露mobile.mydomain,可删除以下两个server块,或添加访问限制
server {
    listen         80;
    server_name    mobile.mydomain;
    return         301 https://mydomain$request_uri; # 改为跳转到主域名,避免用户直接访问子域名
}
include mime.types;
server {
    listen 443 ssl;
    server_name mobile.mydomain;
    ssl_certificate /etc/ssl/CA_Bundle.ca-bundle;
    ssl_certificate_key /etc/ssl/2021/server.key;
    return 301 https://mydomain$request_uri; # 所有子域名请求都跳转到主域名
}

注意事项

  • 如果移动端应用内存在写死的mobile.mydomain静态资源引用,可以使用Nginx的sub_filter模块批量替换响应内容中的子域名为主域名
  • 若需要区分PC和移动端请求的缓存,可以在缓存规则中加入$agentflag作为缓存key的一部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:36:00