2013-01-10 31 views
21

Sự cố: Tôi cần lưu trữ ứng dụng Node và ứng dụng php trên cùng một máy chủ trên các miền khác nhau.Apache + Node.js + mod_proxy. Cách định tuyến một miền đến: 3000 và một miền khác: 80

example.com nên sử dụng cổng 80 như bình thường, nhưng node-example.com nên đường đến cổng 3000.

Routing ALL giao thông từ cảng 80-3000 hoạt động tốt bằng mod_proxy, thusly:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName node-example.com 
    ServerAlias www.node-example.com 

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:3000/ 
      ProxyPassReverse http://localhost:3000/ 
    </Location> 

</VirtualHost> 

Tuy nhiên, điều này làm cho cả example.com và node-example.com trỏ đến localhost: 3000 và chạy ứng dụng Node.

Có cách nào để giữ example.com trỏ đến cổng 80 không?

Nó cũng sẽ là okay cho example.com/old-admin để trỏ đến cổng 80.

+0

bạn đã thành công? – Fardin

Trả lời

27

Chỉ cần chắc hai <VirtualHost *:80> thẻ

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.node-example.com 

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:3000/ 
      ProxyPassReverse http://localhost:3000/ 
    </Location> 

</VirtualHost> 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName node-example.com  

    ProxyRequests off 

    <Proxy *> 
      Order deny,allow 
      Allow from all 
    </Proxy> 

    <Location /> 
      ProxyPass http://localhost:80/ 
      ProxyPassReverse http://localhost:80/ 
    </Location> 

</VirtualHost> 

Nó sẽ làm việc theo cách đó;)

Hoặc nếu ứng dụng localhost:80 của bạn không phải là nút, bạn có thể xóa <Proxy *> & <Location /> thẻ cho mục tiêu đó và thay thế bằng DocumentRoot /var/www/node-example.com - đường dẫn tĩnh của bạn đến index.html

+0

Tôi đã thử sử dụng hai thẻ virtualhost trước đây, nhưng nó không hoạt động ... Tắt tôi quên cài đặt "NameVirtualHost *". Cảm ơn vì câu trả lời! – olke

+0

Đúng, đó là điều bắt buộc để cấu hình của bạn hoạt động :) – drinchev

+0

@olke nên đánh dấu được chấp nhận ... – Pete

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