2013-01-24 36 views
26

Ý tưởng là để có yêu cầu đến để http://abc.example.com/... và viết lại chúng để http://example.com/abc/...Nginx chuyển đổi tên miền phụ để thành phần đường dẫn mà không cần chuyển hướng

Đó là đủ dễ dàng để làm với một chuyển hướng 301/302:

# rewrite via 301 Moved Permanently 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

Bí quyết là thực hiện thay đổi URL này minh bạch cho khách hàng khi abc.example.comexample.com chỉ vào cùng một phiên bản Nginx.

Nói cách khác, Nginx có thể phân phát nội dung từ example.com/abc/... khi abc.example.com/... được yêu cầu và mà không một khách hàng khác khứ hồi?

Starting Point Config

Nginx cấu hình mà hoàn thành nhiệm vụ với một 301:

# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    rewrite^$scheme://example.com/abc$request_uri permanent; 
} 

# example.com 
server { 
    listen 80; 
    server_name example.com; 
    location/{ 
    # ... 
    } 
} 

Trả lời

30
# abc.example.com 
server { 
    listen 80; 
    server_name abc.example.com; 
    location/{ 
    proxy_pass http://127.0.0.1/abc$request_uri; 
    proxy_set_header Host example.com; 
    } 
} 
+2

Các công trình lớn có Nginx proxy để bản thân. Đã thay đổi máy chủ thành 127.0.0.1 vì nếu không Nginx phải giải quyết tên máy chủ (toàn bộ vấn đề riêng biệt). Đã thêm '$ request_uri' để đường dẫn được nối vào trong yêu cầu proxy. –

+0

Điều này hoạt động hoàn hảo. Chỉ cần xem ra các nội dung tĩnh có thể 404. –

+1

@KJTrong vấn đề với tài sản 404 là gì? –

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