51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx使用泛域名反向代理及后端动态前缀

概述

在某网络论坛上遇到需要Nginx泛域名反向代理且反向代理的后端域名前缀需与访问的域名前缀相同。

需要通过访问abc.test1.lolicp.com(abc为随机值)来实现反向代理后端HOST为abc.test2.lolicp.com(域名前缀访问一致)

处理办法

办法一

直接通过server_name匹配域名前缀信息。

server {
    listen  80;
    server_name ~^(?<subdomain>.+).test1.lolicp.com$;
    index index.html;

    # 缓存静态页面
    location ~ \.html$ {
        # 配置后端服务器
        proxy_pass http://127.0.0.1;
        proxy_redirect off;
        # 回源HOST
        proxy_set_header Host $subdomain.test2.lolicp.com;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        # 隐藏由proxy响应客户端时指定的首部;
        proxy_hide_header Cache-Control ;
    }



`}`

办法二

通过if判断配置变量

server {
    listen      80;
    server_name *.test1.lolicp.com;
    index index.html index.htm index.php;

    # 定义域名前缀
    if ($host ~ "^(.*)\.test1\.lolicp\.com$") {
      set $subdomain $1;
    }

    # 缓存静态页面
    location ~ \.html$ {
        # 配置后端服务器
        proxy_pass http://127.0.0.1;
        proxy_redirect off;
        # 回源HOST
        proxy_set_header Host $subdomain.test2.lolicp.com;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        # 隐藏由proxy响应客户端时指定的首部;
        proxy_hide_header Cache-Control ;
    }



`}`

重启Nginx
[root@localhost ~]# systemctl restart nginx
赞(1)
未经允许不得转载:工具盒子 » Nginx使用泛域名反向代理及后端动态前缀