2014-08-29 23 views
5

Tôi đang gặp vấn đề về cấu hình tên miền chéo bằng nginx và buồm. Vấn đề là nếu tôi nhận được ổ cắm để kết nối đúng cách qua http://domain-server.com/socket.io/ thì yêu cầu RESTful sẽ không thành công. Nếu RESTful hoạt động, socket sẽ không hoạt động.vấn đề cấu hình tên miền chéo sử dụng nginx, buồm và nổi bật

Cài đặt

Khách hàng http://domain.com

server http://server-domain.com

Khách hàng là một ứng dụng sử dụng góc "sails.io.js": "0.10.3" và cấu hình này io.sails.url = 'http://domain-server.com';.

Máy chủ là ứng dụng cánh buồm có cả tính năng yêu cầu và ổ cắm RESTful.

Sails CORS cấu hình

module.exports.cors = { 
    allRoutes: true, 
    origin: 'http://domain.com', 
    credentials: true, 
    methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD', 
    headers: 'content-type,Access-Control-Allow-Origin' 
}; 

Sails ổ cắm cấu hình

module.exports.socket { 
    onConnect: function() {}, 
    onDisconnect: function() {}, 
    authorization: false, 
    'backwardsCompatibilityFor0.9SocketClients': false, 
    grant3rdPartyCookie: true, 
    origins: 'http://domain.com' 
}; 

nginx cấu hình

nhận xét ra là những gì tôi đã fiddled với trong cấu hình nginx không nhiều thành công (cũng t ried địa chỉ khách hàng thay vì *).

server { 
    listen 80; 

    server_name domain-server.com; 
#add_header Access-Control-Allow-Origin *; 
    location/{ 
#  add_header Access-Control-Allow-Origin *; 

     proxy_pass http://localhost:1337; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
#  proxy_set_header Access-Control-Allow-Origin *; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

phương pháp dịch vụ angularjs làm cho RESTful gọi

function query(path, attributes) { 

    return $http({ 
     url: domain + path, 
     params: attributes, 
     method: "GET", 
     widthCredentials: true 
    }); 
} 

Trong chức năng cấu hình góc

$httpProvider.defaults.useXDomain = true; 

Đây là cấu hình hiện tại và đây là kết quả tôi đang trải qua .

Trình duyệt giao diện điều khiển đầu ra

Resource interpreted as Script but transferred with MIME type text/html: "http://domain-server.com/__getcookie". - Tốt

|>
\___/ sails.io.js:200 io.socket connected successfully.
- Tốt

XMLHttpRequest cannot load http://domain-server.com/login?password=test&username=test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domain.com' is therefore not allowed access. - Không tốt

CẬP NHẬT

Dường như tất cả mọi thứ hoạt động tự hỏi nếu tôi bắt đầu buồm trực tiếp bằng cách sử dụng sails lift hoặc node app.js nhưng khi bắt đầu bằng cách sử dụng tập lệnh mới nổi trong tệp .conf xảy ra sự cố tên miền chéo.

kịch bản mới nổi

#!upstart 
description "demo" 
author "gillesc" 

start on (local-filesystems and net-device-up IFACE=eth0) 
stop on shutdown 

respawn 
respawn limit 5 60 

script 
    exec /usr/bin/node /var/www/apps/domain-server.com/app.js > /var/www/apps/domain-server.com/server.log 2>&1 
end script 
+0

Địa điểm này được lưu trữ ở đâu? Một số máy chủ lưu trữ đám mây (như OpenStack) dường như chặn các tiêu đề CORS khỏi bị gửi đi. – sgress454

+0

Tôi có thể nhận được CORS để làm việc tốt cho RESTful, nó chỉ khi họ làm bên socket.io của điều không còn làm việc. Có vẻ như có xung đột ở đâu đó. – GillesC

+0

Bạn sẽ nhận được gì nếu bạn điều hướng đến 'http: //domain-server.com/login? Password = test & username = test' trong trình duyệt? Đây có phải là trang lỗi nginx không? Bạn có đảo ngược yêu cầu proxy đúng từ nginx đến ứng dụng buồm không? Hoặc là họ trên các cổng khác nhau? – david

Trả lời

1

Hãy thử thêm dòng sau vào phía trên cùng của app.js ứng dụng Sails của bạn file:

process.chdir(__dirname); 

Các not found bạn đang nhìn thấy là khả năng mặc định Thông báo nhanh 404. Nếu bạn cố gắng nâng ứng dụng Sails lên bên ngoài thư mục riêng của nó, các tệp API (ví dụ: bộ điều khiển) sẽ không được tải đúng cách. Các process.chdir đã được thêm vào mặc định app.js tại một số điểm để ngăn chặn vấn đề này, nhưng có vẻ như có một hồi quy ở đâu đó trên đường đi.

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