nginx位置代理到子域

时间:2015-02-12 11:25:34

标签: nginx proxy subdomain

在我的设置中,我确实有一些子域名。它们完全配置并正常工作。 出于某些原因,我需要从我的主域到这些子域的代理。

例如。我有一个名为subdomain.domain.tdl的子,我想将所有从domain.tld / p / subdomain传递给subdomain.domain.tdl

到目前为止我的配置:

    location / {
            proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://localhost:8002;
    }

# Proxy to subdomains
location ^/p/(.+)/(.*)$ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://$1.my-example-domain.tld/$2;
    }

但这不起作用。 所有对/p/subdomain/index.html的请求都由localhost上运行的节点服务器获取:8002

你能给我一些建议如何将/ p / *路由到$ 1.my-example-domain / *?

提前多多感谢。 PS

*更新* 这是我的-V:

$ nginx -V
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: 
    --prefix=/etc/nginx 
    --conf-path=/etc/nginx/nginx.conf 
    --error-log-path=/var/log/nginx/error.log 
    --http-client-body-temp-path=/var/lib/nginx/body 
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
    --http-log-path=/var/log/nginx/access.log 
    --http-proxy-temp-path=/var/lib/nginx/proxy 
    --http-scgi-temp-path=/var/lib/nginx/scgi 
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi 
    --lock-path=/var/lock/nginx.lock 
    --pid-path=/var/run/nginx.pid 
    --with-pcre-jit 
    --with-debug 
    --with-http_addition_module 
    --with-http_dav_module 
    --with-http_geoip_module 
    --with-http_gzip_static_module 
    --with-http_image_filter_module 
    --with-http_realip_module 
    --with-http_stub_status_module 
    --with-http_ssl_module 
    --with-http_sub_module 
    --with-http_xslt_module 
    --with-ipv6 
    --with-sha1=/usr/include/openssl 
    --with-md5=/usr/include/openssl 
    --with-mail 
    --with-mail_ssl_module 
    --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-auth-pam 
    --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-echo 
    --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-upstream-fair 
    --add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-dav-ext-module

1 个答案:

答案 0 :(得分:0)

感谢SuddenHead,这有效:

location ~ ^/p/(.+?)/(.*)$ {
            resolver 8.8.8.8;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://$1.domain.tld/$2;
    }

我必须删除主机头并添加一个解析器。