2012-10-18 59 views
9

我希望能夠通過子域 .domain.com到.domain.com Apache服務器,與子域信息了。Nginx的通配符代理,通子域名服務器(上游代理)

我想作一個nginx的緩存域,像個通配符,但經過子域到目的地(有阿帕奇女巫通配符太)。到目前爲止,我通過proxy_set_header Host $ host傳遞信息;但我想要在apache服務器上有子域請求。

upstream domain.com { 
    server 172.1.1.1:80 weight=50 fail_timeout=30s; 
    } 

    server { 
    server_name *.domain.com; 

    location/{ 
     proxy_pass http://domain.com; 
     #proxy_pass $request; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $host; 
    } 

    location ~* ^.+. (jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf)$ { 
    proxy_pass http://topmanagergame.com; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_cache my-cache; 
    proxy_cache_valid 200 302 30m; 
    proxy_cache_valid 404  1m; 
    } 

    access_log /var/log/nginx/domain.com.log main; 
    error_log off; 
} 

你認爲我可以使用proxy_pass與上游?

Nginx (*wildcard_domain.com) --(cache)--> Apache (*wildcard_domain.com) 
Nginx (anything.domain.com) --(cache)--> Apache (anything.domain.com) 
+0

proxy_pass你有沒有這出更多的例子嗎? – Nathan

回答

7
upstream somestring { 
    server domain2.com:80 weight=50 fail_timeout=30s; 
} 

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

    server_name ~^(?<subdomain>.+)\.domain\.com$; 

    location/{ 
     proxy_pass http://somestring; 
     proxy_set_header Host    $subdomain.domain2.com; 
    } 
} 
2

所以我試圖找到答案這個問題,並保持找到這篇文章。但我認爲dmytrivv的答案已過時。在我們的場景中,我們有通配符域(例如* .mydomain.com)和自定義域(例如fullycustomdomain.com)。但是你可以通過使用proxy_set_header Host $ host來解決這兩個問題;默認在您的收聽結束。

upstream qaweb { 
    # Servers in the web farm 
    server ip-notreal-name.ec2.internal:80; 
} 


server { 
     listen 443 ssl default; 

     ssl_certificate  certs/mydomain.com.crt; 
     ssl_certificate_key certs/mydomain.com.key; 

     # Support for wildcard domains 
     server_name admin.mydomain.com *.mydomain.com ""; 

     location/{ 
       # Turn off access logging so we don't fill the hardrive 
       access_log  off; 
       proxy_pass http://qaweb; 
       proxy_set_header Host $host; 
       # So that the correct IP shows up in the log once libapache2-mod-rpaf is installed 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
} 

請注意,我們也將其用作TLS終止代理。

您還可以找到關於如何使用這裏https://www.liaohuqiu.net/posts/nginx-proxy-pass/