注意:更新了配置,并在websocket路径中添加了斜杠。 还是同样的问题
是否可以在带有mod_proxy_wstunnel的Apache反向代理后面使用go-
websocket
?
我尝试并未能使事情正常进行。
我尝试在Apache反向代理(启用了mod_proxy_wstunnel)后面使用Chat示例。而且它不起作用。代理是成功的,而websocket部分根本不起作用。
我的Apache配置看起来与此类似:
<VirtualHost *:80>
DocumentRoot /var/www/foobar
ServerName foobar.com
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ProxyPass /ws/ ws://localhost:8080/ws/
ProxyPassReverse /ws/ ws://localhost:8080/ws/
ErrorLog logs/error_log-foobar
CustomLog logs/access_log-foobar common
LogLevel debug
</VirtualHost>
当然,我正在端口8080上运行聊天服务器。我已经使用SSH隧道对其进行了测试,并且一切正常。然后我转到了Apache。
我第一次尝试,javascript控制台抱怨如下:
NetworkError: 403 Forbidden - http://foobar.com/ws/
该请求似乎停留在原点检查中。然后我在注释掉原点检查后再次尝试,它得到以下结果:
NetworkError: 400 Bad Request - http://foobar.com/ws/
似乎聊天服务器根本没有收到升级请求。
我应该如何调试呢?我应该从哪里开始寻找?
我在CentOS 7上的Apache 2.4.18之后使用Go安全WebSocket(wss://)服务器。以下是设置:
确保系统具有mod_proxy_wstunnel:
#查找/ usr / lib64 / httpd / modules / | grep ws
/usr/lib64/httpd/modules/mod_proxy_wstunnel.so
在00-proxy.conf中添加以下行:
#vim /etc/httpd/conf.modules.d/00-proxy.conf
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
重新启动Apache:
#systemctl重新启动httpd
检查设置:
#httpd -M | grep -iE’代理’
proxy_module (shared)
proxy_fcgi_module (shared)
proxy_http_module (shared)
proxy_wstunnel_module (shared)
编辑httpd-vhosts.conf:
#vim /etc/httpd/conf.d/httpd-vhosts.conf
<VirtualHost *:443>
ServerName go.mydomain.com:443
ProxyPreserveHost On
ProxyRequests off
SSLProxyEngine On
SSLCertificateFile "/etc/pki/tls/certs/mydomain.com/mydomain.crt"
SSLCertificateKeyFile "/etc/pki/tls/certs/mydomain.com/mydomain.key"
### The configured ProxyPass and ProxyPassMatch rules are checked
### in the order of configuration. The first rule that matches wins.
ProxyPassMatch ^/(ws(/.*)?)$ wss://192.168.0.1:443/$1
ProxyPass / https://192.168.0.1:443/
ProxyPassReverse / https://192.168.0.1:443/
ErrorLog "/var/log/httpd/go.mydomain.com-error_log"
CustomLog "/var/log/httpd/go.mydomain.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
ServerName go.mydomain.com:80
ProxyPreserveHost On
ProxyRequests off
###
ProxyPassMatch ^/(ws(/.*)?)$ ws://192.168.0.1:80/$1
ProxyPass / http://192.168.0.1:80/
ProxyPassReverse / http://192.168.0.1:80/
ErrorLog "/var/log/httpd/go.myhtml" target="_blank">domain.com-error_log"
CustomLog "/var/log/httpd/go.mydomain.com-access_log" common
</VirtualHost>
2025秋招,时长55分钟,面试官人很好 1. 自我介绍 2-5. 实习项目 6. 线上如何保证稳定性?代码鲁棒性判断、监控报警、上线实验检测、出问题时的处理 7. 设计一个用户的权限管理系统,用户,权限,部门,如何设计这个数据库的数据表? 8. 对mysql的了解程度是什么? 9. 在一个具有id,name, sex,number几个字段的学生表(student)中,在name上已经建立了索引,
问题内容: Go 的用途是什么?语言文档说它在周围的函数返回时执行。为什么不将代码放在给定函数的末尾? 问题答案: 我们通常用来关闭或释放资源。 周围的函数会在返回之前执行所有延迟的函数调用,即使它会慌乱。如果仅将函数调用放在周围函数的末尾,则在发生紧急情况时将跳过该调用。 而且,延迟函数调用可以通过调用内置函数来处理紧急情况。这不能通过函数结尾处的普通函数调用来完成。 每个延迟的调用都放在堆栈中
问题内容: 我想使用Go模板以及VueJS进行数据绑定。有人整合过吗? 我希望主要将VueJS用于Ajax调用,因为手动(或使用jQuery)总是使我的代码混乱。 更具体地说,如果我有一个简单的标签,其值是从Go模板生成的,如下所示: 现在我想像这样绑定到值 : 两者都用于同一标签。 问题答案: 如果要将Vue.js与另一个模板系统混合,则可以选择使用其他方式更改插值定界符(默认情况下)。 现在,
问题内容: 我正在尝试在Go项目中使用专有的DLL。 DLL的方法描述之一如下所示: 在我的测试Go项目中,我正在执行以下操作: 库被调用,出现错误消息“路径不存在”,但是我认为我的路径类型不正确。这就是为什么库看不到该文件夹的原因。 也许有更好的方法可以做到这一点?也许这是Go使用情况的坏案例,我应该找到一些软件包甚至语言? 问题答案: 您的路径可能需要NUL终止:
面试时长整整一小时 手写代码题 goroutine交替打印1 - 100 以内的奇数偶数 ******************** (有一些修改,大致一样) 八股文 项目中使用go语言遇到过哪些问题 在go语言中 chan 有什么作用 select的作用(举了实际的例子具体的实现)(比如说满足第一个case 会进第二个case吗) context的作用(举了实际的例子具体的实现) 数组和切片的切片
自身情况:半年经验,985本,公司裁员离开了,经过一个月左右的面试总算上岸了 由于工作经验的硬伤,最大的关卡在简历关。 还有就是社招的流程真的很快很快,想同时走十几家公司的流程根本不可能,因为面试过了基本会在一天内通知你,然后进入下一场面试,建议在有一定面试经验后,按照求职期望从高到低分批次投递,不然选offer时会很麻烦。。。 以下是面试问题的整理: 一,Go语言相关 1,Go里有哪些数据结构是