You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Apache反向代理同时支持HTTPS网站与WSS Websocket服务

问题根因

你当前的配置存在3个核心错误:

  • 443端口的虚拟主机未配置SSL证书参数,导致HTTPS访问时触发证书不安全报错
  • 443端口的虚拟主机只配置了WebSocket相关代理规则,没有配置普通HTTP请求的反向代理指向网站服务的8030端口
  • WebSocket匹配的Rewrite规则变量语法错误,代理跳转逻辑冗余,会导致不必要的请求回环

前置检查

首先确保Apache已经启用必要模块,Debian/Ubuntu执行以下命令启用:

a2enmod proxy proxy_http proxy_wstunnel rewrite ssl

CentOS/RHEL修改httpd.conf加载对应模块即可。

修正后的完整配置

<VirtualHost *:80>
  ServerName app.mydomain.com
  # 80端口直接跳转HTTPS,无需冗余代理配置
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =app.mydomain.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

<VirtualHost *:443>
  ServerName app.mydomain.com

  # SSL证书配置,替换为你实际的证书文件路径
  SSLEngine on
  SSLCertificateFile /path/to/your/fullchain.pem
  SSLCertificateKeyFile /path/to/your/privkey.pem
  # 如证书服务商要求提供证书链,取消下方注释填写对应路径
  # SSLCertificateChainFile /path/to/chain.pem

  # 修复WebSocket匹配规则,匹配后直接代理到后端WS服务
  RewriteEngine on
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteCond %{HTTP:Connection} upgrade [NC]
  RewriteRule ^/app/(.*) ws://10.160.x.x:6001/app/$1 [P,L]

  # 长路径规则在前,优先匹配/app前缀的WebSocket请求
  ProxyPass /app/ ws://10.160.x.x:6001/app/
  ProxyPassReverse /app/ ws://10.160.x.x:6001/app/

  # 剩余所有请求代理到网站服务的8030端口
  ProxyPreserveHost on
  ProxyPass / http://10.160.x.x:8030/
  ProxyPassReverse / http://10.160.x.x:8030/

  ProxyRequests off
</VirtualHost>

生效操作

修改完配置后执行语法检查:

# Debian/Ubuntu
apache2ctl configtest
# CentOS/RHEL
httpd -t

确认语法无报错后重载Apache服务即可生效。

内容的提问来源于stack exchange,提问作者naghal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:05