首先,是的,我知道有類似問題的SO上有很多相關問題。在提問之前,我已經經歷了幾乎所有的人。生產實例中找不到socket.io.js
我有一個非常奇怪的問題,其中,生產實例上的服務器不提供socket.io.js文件。
完全相同的代碼適用於我的開發實例。開發和生產實例之間的唯一區別是,產品實例使用nginx代理運行,但我不認爲這應該是問題。
當我試圖訪問https://my-host-name.com/socket.io/socket.io.js
我得到錯誤 「404未找到」
Nginx的日誌給出了這樣的錯誤:
2017/08/17 12:01:28 [error] 30437#0: *2298619 open() "/data/api/current/socket.io/socket.io.js" failed (2: No such file or directory), client: 10.xxx.x.xx, server: , request: "GET /socket.io/socket.io.js HTTP/1.1", host: ""
我是怎麼回事錯在這裏完全一無所知。誰能幫幫我嗎?
這裏是app.js文件我的插座confiiguration:
var server = https.createServer(app.get("httpsOptions"), app);
var socket = require('socket.io');
var io = socket.listen(server);
server.listen(app.get('port'), function(){
logger.info("Starting the express app...");
logger.info("Express server listening on port " + app.get('port'));
});
require('./routes/sockets/base')(io); // separating the socket.io related code in separate file
我可以看到我的node_modules已經socket.io,socket.io適配器,socket.io的客戶端和socket.io解析器
您需要socket.io.js請求通過NGINX到你Express服務器(而不是NGINX試圖服務器直接),你需要的路徑與它得到您的明示服務器是'/ socket.io/socket.io.js'。這似乎是一個NGINX配置問題,看起來好像可能是某種多tennant NGINX配置,也在路徑中添加了'/ data/api/current'。 – jfriend00
我想看看nginx的CONF,並添加下面的行: 別名/socket.io/ {化名} /data/api/current/node/node_modules/socket.io-client/dist/ 現在我可以請參閱通過此鏈接提供的socket.io.js文件:https://my-host-name.com/socket.io/socket.io.js 但是,所有輪詢都失敗,出現403禁止的錯誤: 這裏是nginx日誌:「/data/api/current/node/node_modules/socket.io-client/dist//」的目錄索引被禁止, – undefined