Problem with safari

Hi i have installed and running jitsi-meet on own server but i am facing a problem on OSX in chrome and firefox evrything works okay but in
Safari on OSX mojave i am receiving Safari : Safari Cant open the page with this error with NGinx
2020/03/29 12:30:41 [error] 4221#4221: *30 recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client:, server:, upstream: β€œ127.0.0.1:4445”, bytes from/to client:452/3022, bytes from/to upstream:3022/641
in Catalina is okay ?


Identical issue to dani521:

Fresh install of Jitsi Meet on Ubuntu 18.04.4 LTS using built-in Let’s Encrypt cert renewal and Nginx. Conf for Ngnix posted below.

Jitsi Meet landing page loads fine in:

  • Chrome on macOS Mojave and Catalina
  • Safari on macOS Catalina
  • Safari on iOS 13

Will not load in:

  • Safari on macOS Mojave (and older macOS versions)

I am aware that Safari has limited support for video but the landing page and audio typically works on my other Jitsi instances.

Safari displays:

"Safari Can't Open the Page because the server unexpectedly dropped the connection.". 

Safari console does not report any information on failed load.

Ngnix error log reports:

[error] 4881#4881: *93 recv() failed (104: Connection reset by peer) while proxying and reading from upstream, client:, server:, upstream: "", bytes from/to client:436/520, bytes from/to upstream:520/999

I run multiple Jitsi Meet instances and this one appears unique in that it’s Ngnix config (setup by the Jitsi installer) is listening on 4444 with http2, whereas my other instances all listen on 443 without http2.

Any help would be appreciated. Thanks!

server_names_hash_bucket_size 64;

server {
    listen 80;
    listen [::]:80;

    location ^~ /.well-known/acme-challenge/ {
       default_type "text/plain";
       root         /usr/share/jitsi-meet;
    location = /.well-known/acme-challenge/ {
       return 404;
    location / {
       return 301 https://$host$request_uri;
server {
    listen 4444 ssl http2;
    listen [::]:4444 ssl http2;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000";

    ssl_certificate /etc/letsencrypt/live/;
    ssl_certificate_key /etc/letsencrypt/live/;

    root /usr/share/jitsi-meet;

    # ssi on with javascript for multidomain variables in config.js
    ssi on;
    ssi_types application/x-javascript application/javascript;

    index index.html index.htm;
    error_page 404 /static/404.html;

    location = /config.js {
        alias /etc/jitsi/meet/;

    location = /external_api.js {
        alias /usr/share/jitsi-meet/libs/external_api.min.js;

    #ensure all static content can always be found first
    location ~ ^/(libs|css|static|images|fonts|lang|sounds|connection_optimization|.well-known)/(.*)$
        add_header 'Access-Control-Allow-Origin' '*';
        alias /usr/share/jitsi-meet/$1/$2;

    # BOSH
    location = /http-bind {
        proxy_pass      http://localhost:5280/http-bind;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $http_host;

    # xmpp websockets
    location = /xmpp-websocket {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        tcp_nodelay on;

    location ~ ^/([^/?&:'"]+)$ {
        try_files $uri @root_path;

    location @root_path {
        rewrite ^/(.*)$ / break;

    location ~ ^/([^/?&:'"]+)/config.js$
       set $subdomain "$1.";
       set $subdir "$1/";

       alias /etc/jitsi/meet/;

    #Anything that didn't match above, and isn't a real file, assume it's a room name and redirect to /
    location ~ ^/([^/?&:'"]+)/(.*)$ {
        set $subdomain "$1.";
        set $subdir "$1/";
        rewrite ^/([^/?&:'"]+)/(.*)$ /$2;

    # BOSH for subdomains
    location ~ ^/([^/?&:'"]+)/http-bind {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /http-bind;

    # websockets for subdomains
    location ~ ^/([^/?&:'"]+)/xmpp-websocket {
        set $subdomain "$1.";
        set $subdir "$1/";
        set $prefix "$1";

        rewrite ^/(.*)$ /xmpp-websocket;

I’m having the same issue. Seems to be related to http2.
I am also able to reproduce by just using wget since it does not seem to support http2.

I am only running clients with Chrome, but check out this solution. It solved my problem when Firefox clients attempted to join a meeting: Chat room always shows "Unfortunately something went wrong. We're trying to fix this..."

Hi Guys, I resolve this issue by changing to this :

     map $ssl_preread_alpn_protocols $upstream {
        ~\bh2\b         web;
        ~\bhttp/1\.     web;
        default         turn;

this is located in /etc/nginx/modules-enabled/60-jitsi-meet.conf
as suggested in

so basically old safari browser cannot access the sites because it redirected to the turn server.

hope it helps. cheers.



above file is not showing in nginx/modules-enabled/ directory

Jitsi meet is not working in iPhone safari.

Please help me to fix the issue

is this running on docker?

yes, running on docker

Jitsi meet is running on docker

Jitsi meet issue with iPhone safari is fixed
Jitsi meet is not working in iPhone chrome browser