nginx二级域名转发提取分析

我就是想把 www.aa.baidu.com 这样的二级域名通过nginx转发成 www.baidu.com:3001/aa ,这里aa是个变量我想获取进行转发,也尝试过的方法都已失败告终,其实我刚学服务器触及到基础求大佬莫嫌弃?
尝试一:

server {
   listen 80;
   server_name ~^(www\.)?(?<domain>.+).wxsub.com$;

   error_log /data/log/nginx_log/error.log;

   location / {
          proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-Ip $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_pass 212.129.251.250:3001/$domain;
   }
}

尝试二:

server {
   listen 80;
   server_name *.wxsub.com;

   error_log /data/log/nginx_log/error.log;

   location / {
          proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-Ip $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_pass 212.129.251.250:3001/$1;
   }
}

上面都是我尝试的方法,都不行?,日志得意思是没有获取到域名中的aa没获取到(proxy_pass 212.129.251.250:3001这样是没问题的),也不知道什么原因怎么试都不行,求内行的大佬帮我指点一下快要崩溃了

阅读 3.6k
1 个回答

可以试试这个,只是个思路,没有验证过...

location / {

        if ($host ~* www\.(\w+)\.wxsub\.com) { 
          set $www www.wxsub.com;
          set $subdomain $1;
        
        }
          proxy_set_header Host $www;
          proxy_set_header X-Forwarded-For $remote_addr;
          proxy_pass 212.129.251.250:3001/$subdomain;

}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题