我需要托管一个通过HTTPS服务器使用laravel-echo-server的laravel应用程序。
我想使用Apache的反向代理将我的/socket.io
URL轮询重定向到同一域URL
中正在运行的127.0.0.1
端口上。6001``laravel-echo-server
例如,https://example.com
当我laravel-echo- server
向https://example.com/socket.io
apache
发送url民意调查时,应将其重定向到http://127.0.0.1:6001
同一域内。
注意
我不是将laravel应用托管在cpanel的子目录中,而是托管在根目录中。
我的服务器是a VPS
,我从一个子域主机托管,该子域主机运行在与主服务器主机不同的IP地址上。
假设我的主要主机host.mydomain.com
具有指向/home/...
目录的唯一IP地址。这在http
现在,我有一个domestic.mydomain.com
指向/home/domestic/...
目录的唯一IP地址,这是我托管laravel应用程序的位置。这在上运行https
。
但是我的cpanel登录来自host.mydomain.com
我访问domestic.mydomain.com
文件管理器的IP地址
我的laravel-echo-server.json
模样:
{
"authHost": "https://example.com",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "xxxx",
"key": "xxxxxxxx"
}
],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": false,
"host": "127.0.0.1",
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": false,
"allowOrigin": "",
"allowMethods": "",
"allowHeaders": ""
}
}
我如何部署我的laravel-echo
:
import Echo from "laravel-echo";
window.io = require('socket.io-client');
// Have this in case you stop running your laravel echo server
if (typeof io !== 'undefined') {
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname,
});
window.Echo.channel('session-expired')
.listen('sessionExpired', (e) => {
setTimeout(location.reload(), 3000);
});
}
当我运行时,laravel-echo-server start
它会成功初始化并显示running on 127.0.0.1 on port 6001
然后这是我的Apache反向代理配置/etc/httpd/conf/httpd.conf
:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
# mod_proxy setup.
ProxyRequests Off
ProxyPass /socket.io http://127.0.0.1:6001
ProxyPassReverse /socket.io http://127.0.0.1:6001
<Location "/socket.io">
Order allow,deny
Allow from all
</Location>
我的问题是,当我打开网站时,民意测验会同时返回一组OK
和404
响应,但它没有加入socket.io中的任何通道。经过大量测试,我发现代理确实可以重定向,但是我怀疑它是否达到了我想要的特定代理。
这是我的404的HTML响应,这不是服务器配置的404响应:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /</pre>
</body>
</html>
它可以在我的本地服务器上完美运行,但是我需要使其在我的生产服务器上运行。
终于明白了,这是我的laravel-echo-server.json
:
{
"authHost": "https://example-domain.com",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "xxxxxxx",
"key": "xxxxxxxxxxxxxx"
}
],
"database": "redis",
"databaseConfig": {
"redis": {
"port": "6379",
"host": "localhost"
},
"sqlite": {}
},
"devMode": true,
"host": "localhost",
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "/path/to/ssl/crt/crt.pem", // or .crt
"sslKeyPath": "/path/to/ssl/key/crt.pem", // or .key
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "*",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
我如何使用laravel-echo-server.json:
import Echo from "laravel-echo";
window.io = require('socket.io-client');
// Have this in case you stop running your laravel echo server
if (typeof io !== 'undefined') {
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname,
});
}
在virtualhost
我的域的SSL中的我的apaxhe配置:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:6001/$1 [P,L]
ProxyPass /socket.io http://localhost:6001/socket.io
ProxyPassReverse /socket.io http://localhost:6001/socket.io
我在设置apache反向代理服务器时遇到问题,希望您能提供帮助。 我安装了带有apache的ubuntu服务器,并启用了以下模块: 然后我用以下内容在代理上设置000-default.conf: 路由器上的端口80和443被转发到代理服务器。在服务(1-3)服务器上,使用来自Lets Encrypt的证书启用SSL。 谢谢你的帮助!
主要内容:1. 简单的反向代理,2. 集群和平衡器,3. Balancer和BalancerMember配置,3. 故障转移,4. 均衡器管理器除了作为“基本”Web服务器,并为最终用户提供静态和动态内容之外,Apache httpd(以及大多数其他Web服务器)也可以充当反向代理服务器,也称为“网关” “服务器。 在这种情况下,httpd本身不生成或托管数据,而是由一个或多个后端服务器获取内容,后端服务器通常没有直接连接到外部网络。当httpd收到来自客户端的请求时,请求本身被代理到这些后端服
本文向大家介绍Nginx反向代理websocket配置实例,包括了Nginx反向代理websocket配置实例的使用技巧和注意事项,需要的朋友参考一下 最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 1.下载 tengine 最近的源码 2.安装基础的依赖包 3.解压编译安装 nginx.conf 的配置如下: test
本文向大家介绍nginx反向代理webSocket配置详解,包括了nginx反向代理webSocket配置详解的使用技巧和注意事项,需要的朋友参考一下 最近在做项目的时候用到了webSocket协议,而且是在微信小程序中用到了webSocket,微信小程序中使用wss协议的时候不能设置端口,只能使用默认的443端口。我擦,我的https已经监听了443端口,webSocket再去监听443,肯定不
我们发现了一个使用http2的解决方案,但更喜欢不使用http2的解决方案(出于原因,请参见https://http2.pro/doc/apache)。 使用http2的Apache工作配置 有人能帮助我们创建一个有效的apache反向代理配置,该配置与CsrfPreventionRequestCycleListener一起工作而不使用http2模块吗?
本文向大家介绍利用python自动生成docker nginx反向代理配置,包括了利用python自动生成docker nginx反向代理配置的使用技巧和注意事项,需要的朋友参考一下 利用python自动生成docker nginx反向代理配置 由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一