Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
APACHE反向代理中的Web套接字_Apache_Websocket_Reverse Proxy - Fatal编程技术网

APACHE反向代理中的Web套接字

APACHE反向代理中的Web套接字,apache,websocket,reverse-proxy,Apache,Websocket,Reverse Proxy,我在AEBS和基站后面运行两台服务器。 Server1运行10.12.6和server5.3.1,并使用webapps执行反向代理,如preducer.ca教程所述。 这允许我只有一个外部IP地址,其中server1.mydomain和server2.mydomain在内部获得分布式IP地址。 这很管用。。但在server2上,我运行Filemaker Webdirect,它使用web套接字。因此,我在浏览器中得到一个wss://错误。 我喜欢我写的网络应用程序 从…起 很明显,我输入了自己的s

我在AEBS和基站后面运行两台服务器。 Server1运行10.12.6和server5.3.1,并使用webapps执行反向代理,如preducer.ca教程所述。 这允许我只有一个外部IP地址,其中server1.mydomain和server2.mydomain在内部获得分布式IP地址。 这很管用。。但在server2上,我运行Filemaker Webdirect,它使用web套接字。因此,我在浏览器中得到一个wss://错误。 我喜欢我写的网络应用程序

从…起 很明显,我输入了自己的server2的IP地址和名称

然而,web套接字wss://server2.mydomain 不起作用。。web direct失败了

我可以登录,但一旦我打开wss连接,它就不再工作了。这是一个apache mod_代理错误

在我读到的apache错误日志中 [Sun Apr 19 21:58:04.846046 2020][proxy_http:error][pid 598](70008)部分结果有效,但处理不完整:[客户端189.62.112.162:49213]AH01110:错误读取响应

我在浏览器里读到

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;
}
下面是我用日语写的一篇文章


我希望这对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>

ServerName my.external.server.name
重新启动发动机
RewriteCond${HTTP:Upgrade}websocket[NC]
RewriteCond${HTTP:Connection}升级[NC]
重写规则/(*)“ws://10.1.2.3:80/$1”[P,L]
# 
代理主机
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/
#命令允许,拒绝
#通融
# 
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
<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>