2012-10-18 9 views
9

मैं सक्षम होने के लिए चाहते हैं अपाचे सर्वर .domain.com को, उपडोमेन की जानकारी भी साथ उपडोमेन .domain.com पारित करने के लिए।Nginx वाइल्डकार्ड प्रॉक्सी, सर्वर (नदी के ऊपर प्रॉक्सी) करने के लिए पास उपडोमेन

मैं डोमेन के लिए एक nginx कैश बनाना चाहता हूं, वाइल्डकार्ड की तरह अभिनय करना चाहता हूं, लेकिन गंतव्य पर सबडोमेन पास कर रहा हूं (अपाचे चुड़ैल वाइल्डकार्ड भी है)। अब तक, मैं proxy_set_header होस्ट $ होस्ट के माध्यम से जानकारी पास करता हूं; लेकिन मैं अपाचे सर्वर पर सबडोमेन के साथ अनुरोध करना चाहता हूं।

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) और कस्टम डोमेन दोनों हैं (उदा। Fullcustomdomain.com)। लेकिन आप proxy_set_header होस्ट $ होस्ट का उपयोग कर दोनों को हल कर सकते हैं; और आपकी सुनने के अंत में डिफ़ॉल्ट है।

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

नोट, हम इसे एक टीएलएस समाप्ति प्रॉक्सी के रूप में भी उपयोग कर रहे हैं।

तुम भी कैसे यहाँ https://www.liaohuqiu.net/posts/nginx-proxy-pass/

संबंधित मुद्दे