[英]Socket.io chat app, apache reverse proxy on path
我使用socket.io作為使用localhost:3000的聊天應用程序,在大多數情況下都可以正常工作,但是對於某些用戶,端口3000被阻塞,因此聊天應用程序無法正常工作。
相反,我想使用反向代理來獲取它來加載帶有路徑的URL,但是我無法使其正常工作。 我查看了很多示例,但是它們都沒有起作用,因此我真的希望有人可以引導我朝正確的方向發展。
我想從這里開始:
對此
這就是我放在default-ssl.conf中的內容
<Location /chatapp>
Order allow,deny
Allow from all
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
但是,當我導航到https://mydomain.co.uk/chatapp時,出現以下錯誤消息。
我需要在服務器或客戶端代碼上進行更改嗎?
目前,我的服務器代碼以以下內容開頭...
// Setup basic express server
var fs = require('fs');
var express = require('express');
var app = express();
var path = require('path');
var server = require('https').createServer({
key: fs.readFileSync('/etc/apache2/ssl/**********************************.key'),
cert: fs.readFileSync('/etc/apache2/ssl/**********************************.crt'),
ca: fs.readFileSync('/etc/apache2/ssl/**********************************.crt'),
requestCert: false,
rejectUnauthorized: false
}, app);
var io = require('../..')(server);
var port = process.env.PORT || 3000;
server.listen(port, function () {
console.log('Server listening at port %d', port);
});
// Routing
app.use(express.static(path.join(__dirname, 'public')));
// Chatroom
var numUsers = 0;
io.on('connection', function (socket) {
var addedUser = false;
我的客戶代碼只是像這樣創建套接字...
var socket = io();
對於任何有興趣的人,我都找到了解決方案。
問題是我的socket.io配置為僅通過https工作,因此,當反向代理嘗試連接時,它試圖轉到http:// localhost:3000 ,並且失敗。
解決方法是更改此...
var server = require('https').createServer({
key: fs.readFileSync('/etc/apache2/ssl/**********************************.key'),
cert: fs.readFileSync('/etc/apache2/ssl/**********************************.crt'),
ca: fs.readFileSync('/etc/apache2/ssl/**********************************.crt'),
requestCert: false,
rejectUnauthorized: false
}, app);
為此...
var server = require('http').createServer(app);
然后,代理人開始活躍起來並開始工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.