2011-06-19 51 views
5

Tôi có một máy chủ được cấu hình để lưu trữ nhiều ứng dụng nhanh hơn node.js + trên nhiều tên miền thông qua giao diện Ngnix. Tất cả mọi thứ hoạt động tốt, trừ khi các cuộc gọi để chuyển hướng được làm từ một tuyến đường cao tốc:Tại sao nút proxy ngược lại của proxy Nginx của tôi chuyển sang 0.0.0.0?

res.redirect('/admin'); 

Sau đó trình duyệt khách hàng được chuyển hướng đến http://0.0.0.0:8090

Nó có vẻ như nó phải là một vấn đề với các tiêu đề chuyển hướng sắp ra của express, nhưng chỉ trong trường hợp nó có liên quan, đây là tệp nginx.conf cho tên miền được đề cập:

server { 
    listen 0.0.0.0:80; 
    server_name *.example.com; 

    access_log /var/log/nginx_example_access.log; 
    error_log /var/log/nginx_example_error.log debug; 

    # proxy to node 
    location/{ 
     proxy_pass   http://0.0.0.0:8090/; 
     proxy_redirect  off; 

     proxy_set_header Host    $proxy_host; 
     proxy_max_temp_file_size 0; 

     client_max_body_size  10m; 
     client_body_buffer_size 128k; 

     proxy_connect_timeout  90; 
     proxy_send_timeout   90; 
     proxy_read_timeout   90; 

     proxy_buffer_size   4k; 
     proxy_buffers    4 32k; 
     proxy_busy_buffers_size 64k; 
     proxy_temp_file_write_size 64k; 
    } 
} 

Trả lời

5

Giải quyết. Tôi đã có một vấn đề trong tập tin conf nginx của tôi đã gây ra node/express để nhận được yêu cầu-header sai. Khi đường dẫn tương đối được chuyển vào res.redirect, nó sẽ kéo Máy chủ lưu trữ từ đối tượng đến req và đặt nó trong tiêu đề phản hồi.

 proxy_set_header Host    $proxy_host; 

cần phải có được

 proxy_set_header Host    $host; 

$proxy_hostthượng nguồn địa chỉ host 0.0.0.0:port

$host là đến yêu cầu-header chủ example.com


CẬP NHẬT

Như Louis Chatriot chỉ ra trong các ý kiến, các phiên bản mới hơn của Nginx đã thay thế $host với $http_host, mà trong các phiên bản trước trả example.com:port nhưng bây giờ trả example.com.

+2

Trong các phiên bản mới nhất của Nginx, bạn nên sử dụng '$ http_host' thay vì' $ host'. –

+0

@LouisChatriot Cảm ơn bạn đã lưu ý! Tôi đã cập nhật câu trả lời để bao gồm nhiều phiên bản hiện tại hơn. –

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