nginx根据域名动态代理
nginx根据域名动态代理
超级超级管理员 发表于2年前
nginx根据域名动态代理
  • 发表于 2年前
  • 阅读 36
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

多个域名,存在数据库里面,访问到nginx的时候,根据不同域名,反向代理到不同的服务器上 编译nginx的时候要启用 auth_request --with-http_auth_request_module

nginx配置

http {
    resolver 114.114.114.114;  # api返回的地址是域名,提示无法解析时添加该行
    auth_request /api.asp;
    auth_request_set $url $sent_http_url;
    
    server {
        listen       80;
        server_name  localhost;
        
        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass $url;

        }
        
        location ~ \.asp$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

}

这里面把asp后缀解析为PHP,会提示Access to the script ‘asp‘ has been denied,把php-fpm 配置文件里面的security.limit_extensions 扩展加上asp 重启服务即可

api.asp 内容

<?php
ob_start();
$domain = substr($_SERVER['HTTP_HOST'],5);
$conn = mysql_connect("127.0.0.1","root","password");
if (!$conn)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("vpopmail", $conn);

$result = mysql_query("select host from tables where domain='".$domain."' limit 1");

while($row=mysql_fetch_array($result))
{
    $url = "http://".$row['host'];
}

mysql_close($conn);

header("url: $url");
exit();
?>
共有 人打赏支持
粉丝 2
博文 34
码字总数 37950
×
超级超级管理员
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: