我有一個在 docker 中運行的網站,該網站通過反向代理在 https 中提供服務。該應用程式使用另一個容器中同一服務器上的 websocket 服務器。
我可以讓應用程式在 https 或 websocket 中作業以正確地將 wss 請求代理到后端 ws 服務器。
這是一個小架構:

每當我將第二個虛擬主機添加到我的配置中時,我現在都可以成功連接wss://app.mydomain.com,但是應用程式https://app.mydomain.com變得不安全并且無法正確訪問。

如果我洗掉它,我可以使用 https 訪問該應用程式,但無法連接到 wss。
這是我的 apache 配置:
<VirtualHost *:80>
ServerName app.mydomain.com
ProxyPreserveHost on
ProxyPass / http://10.160.x.x:8030/
ProxyPassReverse / http://10.160.x.x:8030/
#ProxyPass /app/ ws://10.160.x.x:6001/app/
#ProxyPassReverse /app ws://10.160.x.x:6001/app
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
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "wss://app.mydomain.com/$1" [P,L]
ProxyPass /app/ ws://10.160.x.x:6001/app/
ProxyPassReverse /app/ ws://10.160.x.x:6001/app/
ProxyRequests off
</VirtualHost>
如何在能夠連接到 websocket 服務器的同時編輯組態檔以訪問網站 trought https?
uj5u.com熱心網友回復:
這是最終奏效的:
<VirtualHost *:80>
ServerName app.mydomain.com
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
ProxyPreserveHost on
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule .* "wss://app.mydomain.com/$1" [P,L,END]
ProxyPass /app/ ws://10.160.x.x:6001/app/
ProxyPassReverse /app/ ws://10.160.x.x:6001/app/
ProxyPreserveHost on
ProxyPass / http://10.160.x.x:8030/
ProxyPassReverse / http://10.160.x.x:8030/
SSLCertificateFile /etc/letsencrypt/live/app.mydomain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/app.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/app.mydomain.com/chain.pem
</VirtualHost>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/365765.html
