2012-10-18 42 views
9

Tôi muốn có thể vượt qua tên miền phụ .domain.com đến máy chủ apache .domain.com, với tên miền phụ thông tin.proxy đại diện Nginx, chuyển tên miền phụ tới máy chủ (proxy ngược dòng)

Tôi muốn tạo bộ nhớ cache nginx cho tên miền, hoạt động như ký tự đại diện, nhưng chuyển tên miền phụ đến đích (cũng có thẻ đại diện phù thủy apache). Cho đến bây giờ, tôi chuyển thông tin qua proxy_set_header Host $ host; nhưng tôi muốn có yêu cầu với tên miền phụ tại máy chủ 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; 
} 

Bạn có nghĩ rằng tôi có thể sử dụng proxy_pass với thượng nguồn không?

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

Bạn đã bao giờ tìm ra điều này chưa? – Nathan

Trả lời

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

Vì vậy, tôi đã cố gắng để tìm ra câu trả lời cho vấn đề này và tiếp tục tìm kiếm bài này. Nhưng tôi nghĩ câu trả lời của dmytrivv đã lỗi thời. Trong trường hợp của chúng tôi, chúng tôi có cả hai tên miền ký tự đại diện (ví dụ: * .mydomain.com) và tên miền tùy chỉnh (ví dụ: fullycustomdomain.com). Nhưng bạn có thể giải quyết cả hai bằng cách sử dụng máy chủ lưu trữ $ proxy_set_header Host $; và có mặc định vào cuối thời gian nghe của bạn.

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

Lưu ý, chúng tôi cũng sử dụng nó làm proxy kết thúc TLS.

Bạn cũng có thể tìm thêm ví dụ về cách sử dụng proxy_pass tại đây https://www.liaohuqiu.net/posts/nginx-proxy-pass/

Các vấn đề liên quan