带有自定义变量的 Nginx proxy_pass

带有自定义变量的 Nginx proxy_pass

我对 proxy_pass 和动态子域有疑问。

在我的服务器上,我有一个如下所示的 site_block:

upstream mydockersite{
        server 127.0.0.1:8081;
}
server {
        listen 80;

        server_name ~^review-+(?<subdomain>.+)\.website\.com;

         location / {
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                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;
                proxy_cache_bypass $http_upgrade;

                proxy_pass http://mydockersite;
        }

}

它可以很好地将发送到我的服务器的传入请求重定向到我的 docker 容器(也是一个 NGINX 服务器)。

例如:

http://review-xyz.website.com

或者

http://review-somedynamicsubdomain.website.com

或者

http://review-anothersubdomain.website.com

review-固定部分可以<subdomain>是任何内容,website.com无论如何都是我的域。我看到整个请求域可以通过我设置的标头传递到我的 docker 容器中的服务器,proxy_set_header Host $host;但我不知道如何在我的 docker nginx 服务器的配置中获取它们并重定向到请求的根文件夹。

我的 docker 容器中的 nginx 服务器的配置如下:

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    
    ######## MY PROBLEM IS HERE ########
    root /home/site_reviews/main; 
    ####################################        

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

在这一行:root /home/site_reviews/main;我需要用proxy_pass 的main部分替换该部分<subdomain>

因此,网站提供服务的根文件夹将是子域名

例如,如果我有这样的 URL:,那么我的 docker 容器 nginx 应该为docker 文件夹中的review-x34kk4ids.website.com文件夹提供服务x34kk4ids/home/site_reviews/

答案1

将 的值Host与 进行核对。使用Docker 实例中server_name的相同 值来提取并将其附加到值。server_name$subdomainroot

相关内容