2015-02-06 89 views
2

我很努力地使用流星的DDP.connect()打開從https://siteA.comhttps://siteB.com的連接,其中兩臺服務器都位於nginx反向代理之後,從http轉發到https。打開遠程流星DDP連接反向代理後面

事情在開發中工作正常。在生產中,當我在站點A的控制檯運行DDP.connect('siteB.com'),我收到:

Mixed Content: The page at 'https://siteA.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://siteB.com/sockjs/info?cb=zw6j36l90y'. This request has been blocked; the content must be served over HTTPS. 

在爲站點B我目前nginx的配置,我有以下的(相關部分,LMK如果有更多的要求):

server { 
    listen 80 default_server; 
    location/{ 
    rewrite^https://$server_name$request_uri? permanent; 
    } 
} 

server { 
    listen 443 ssl spdy; 
    add_header Access-Control-Allow-Origin 'https://siteA.com'; 
    proxy_pass http://localhost:3000; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_set_header X-Nginx-Proxy true; 
    proxy_redirect off; 
} 

我得到它抱怨說請求在一個http端點(http://localhost:3000)終止,但我不知道該怎麼辦。

如果我將siteB的nginx配置更改爲proxy_pass https://localhost:3000,則結果爲502 Bad Gateway

我已經嘗試過使用和不使用流星的force-ssl包在siteB上的事情。

這兩個網站都不包括流星的browser-policy包 - 根據我的閱讀,默認設置沒有包應該允許我連接到任何地方。

我也試過DDP.connect("ws://siteB.com");,但是這導致:

XMLHttpRequest cannot load ws://siteB.com/sockjs/info?cb=9lahswe7_9. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 

我應該在不同的端口上監聽?是否有一個nginx配置設置白名單這個請求?任何幫助表示讚賞。

回答