javascript - Socket.io 聊天应用程序,路径上的 apache 反向代理

标签 javascript apache ubuntu proxy socket.io

我将 socket.io 用作使用 localhost:3000 的聊天应用程序,这在大多数情况下运行良好,但是对于某些用户,端口 3000 被阻止,因此聊天应用程序无法运行。

相反,我想使用反向代理来加载带有路径的 url,但我无法使其正常工作。我查看了大量示例,但没有一个有效,所以我真的希望有人能引导我朝着正确的方向前进。

我想从这里开始:

https://mydomain.co.uk:3000

对此

https://mydomain.co.uk/chatapp

这是我在 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 时我收到以下错误消息。

enter image description here

我的服务器或客户端代码是否需要更改?

目前我的服务器代码开始于以下...

// 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);

然后代理启动并开始工作。

关于javascript - Socket.io 聊天应用程序,路径上的 apache 反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967721/

相关文章:

linux - PHP-FPM、Monit、ping/状态页面、Apache

java - 访问被拒绝 Apache CXF SOAP

ruby-on-rails-4 - apache 错误 "Could not download..."的乘客

javascript - 使用 jQuery 解析 XML

javascript - 正则表达式从术语列表中提取多词匹配

javascript - 页面加载后执行 Javascript

linux - 使用带 apache 的正则表达式重定向

java - Apache PDFBox Java 库 - 是否有用于创建表格的 API?

bash - 如何让curl等待响应然后继续执行代码

javascript - 如何将外部 Javascript 包含到 html5