2012-10-18 15 views
9

Mi piacerebbe essere in grado di passare sottodominio .dominio.com al .dominio.com Apache Server, con sottodominio informazioni troppo.Nginx delega jolly, passaggio sottodominio al server (proxy upstream)

Vorrei creare una cache di nginx per domini, che agisce come un jolly, ma che passa al sottodominio sottodominio per destinazione (vi è anche un carattere jolly apache witch). Fino ad ora, ho passato le informazioni tramite l'host $ host proxy_set_header ; ma mi piacerebbe avere una richiesta con sottodominio sul server 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; 
} 

Pensi che sia possibile utilizzare proxy_pass con upstream?

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

Hai mai capire questo? – Nathan

risposta

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

Così ho cercato di trovare la risposta a questo problema e tenuto trovare questo post. Ma penso che la risposta dmytrivv non sia aggiornata. Nel nostro scenario, abbiamo sia domini con caratteri jolly (ad esempio * .mydomain.com) che domini personalizzati (ad esempio fullycustomdomain.com). Ma puoi risolvere entrambi usando l'host $ host proxy_set_header ; e con predefinito alla fine del tuo ascolto.

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; 
     } 
} 

Nota, lo stiamo anche utilizzando come proxy di terminazione TLS.

si possono anche trovare altri esempi su come utilizzare proxy_pass qui https://www.liaohuqiu.net/posts/nginx-proxy-pass/

Problemi correlati