[英]Web Socket in APACHE Reverse Proxy
我在后面運行兩台服務器和 AEBS 基站。 Server1 運行 10.12.6 和 Server 5.3.1,並使用 webapps 執行反向代理,如前體.ca 教程所述。 這使我只有一個外部 IP 地址,其中 server1.mydomain 和 server2.mydomain 在內部進行分發。 這工作正常.. 但在 server2 上我運行 Filemaker Webdirect,它使用 web sockets。 所以我在瀏覽器中得到一個 wss:// 錯誤。 我寫的 web 應用程序;
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule . - [E=protocol:http,E=port:80]
RewriteCond %{HTTPS} =on
RewriteRule . - [E=protocol:https,E=port:443]
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPreserveHost On
ProxyPassReverse / http://1.2.3.4:443/
ProxyPass / http://1.2.3.4:443/
ServerName filemaker.precursor.ca
顯然輸入我自己的IP server2地址及其名稱..
但是 web 套接字 wss://server2.mydomain 不起作用.. web 直接失敗。
我可以登錄,但是一旦我打開一個 wss 連接,它就不再工作了。 .這是一個 apache mod_proxy 錯誤..
在 apache 錯誤日志中我讀到 [Sun Apr 19 21:58:04.846046 2020] [proxy_http:error] [pid 598] (70008)部分結果有效但處理不完整:[client 189.62.112.162:49213] AH0111閱讀反應
在我閱讀的瀏覽器中
WebSocket connection to 'wss://fmserver.embatek.com.br/fmi/webd/PUSH?v-uiId=1&v-pushId=341172cf-5d45-454d-972e-3029de5807fa&X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=2.3.2.vaadin1-javascript&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&Content-Type=application/json;%20charset=UTF-8&X-atmo-protocol=true' failed: Unexpected response code: 500
關於在哪里擺弄的任何提示。 你的皮埃爾
已經很久了,所以可能已經解決了。
我只是遇到了同樣的問題。 我在我的環境中使用了 nginx,但是通過將以下值傳遞給服務器來解決它。
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache_bypass $http_upgrade;
nginx中最終代碼如下
upstream filemakerserver-webdirect-upstream {
server xxxxxx.xxx:443;
}
server {
listen 80;
server_name yyyyyy.yyy;
if ($host = yyyyyy.yyy) {
return 301 https://$host$request_uri;
}
return 404;
}
server {
listen 443 http2 ssl;
server_name yyyyyy.yyy;
location / {
try_files $uri @filemakerserver-webdirect-upstream;
}
location @filemakerserver-webdirect-upstream {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
proxy_pass https://branch-office;
}
ssl_certificate /etc/letsencrypt/live/yyyyyy.yyy/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yyyyyy.yyy/privkey.pem;
}
以下是我用日語寫的一篇文章。
https://qiita.com/Hi_Noguchi/items/82bc17913b646bd6583f
我希望這對 apache 環境有所幫助。
我正在使用 apache,並且安全連接在代理處停止,所以我想如果您的 FileMaker 服務器使用安全連接,您可以通過將 ws 更改為 wss、80 到 443 等來修改我正在使用的虛擬主機配置(如下)。 10.1.2.3 是 FileMaker 服務器的內部地址。 這里可能有一些多余的東西,但它有效
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName my.external.server.name
RewriteEngine on
RewriteCond ${HTTP:Upgrade} websocket [NC]
RewriteCond ${HTTP:Connection} upgrade [NC]
RewriteRule /(.*) "ws://10.1.2.3:80/$1" [P,L]
# <Location />
ProxyPreserveHost On
ProxyPass "/fmi/webd/PUSH" "ws://10.1.2.3:80/fmi/webd/PUSH"
ProxyPassReverse "/fmi/webd/PUSH" "ws://10.1.2.3:80/fmi/webd/PUSH"
ProxyPass / http://10.1.2.3:80/
ProxyPassReverse / http://10.1.2.3:80/
# Order allow,deny
# Allow from all
# </Location>
SSLCertificateFile /etc/letsencrypt/live/my.external.server.name/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/my.external.server.name/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/my.external.server.name/chain.pem
</VirtualHost>
</IfModule>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.