VNC отключается в Selenoid

#docker #nginx-reverse-proxy #vnc #selenoid

Вопрос:

Я использую Селеноид для автоматизации. Я могу запускать тесты на Selenoid, однако, когда я нажимаю на запущенные сеансы браузера, я не могу видеть живое выполнение. т. Е. VNC отключается. Это происходит и с ручными сеансами.

Пожалуйста, обратитесь к скриншоту с выводом консоли :

Скриншот браузера

Установка:

Использование Nginx для доступа к Selenoid на удаленной машине (CentOS). В порту 8081 размещается selenoid, а в порту 8080-selenoid-ui. И изображение браузера-selenoid/vnc_firefox:86.0.

Настройка докера

Вот как я запустил контейнеры

 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v ${HOME}:/root -e OVERRIDE_HOME=${HOME} aerokube/cm:latest-release selenoid start --port 8081 --vnc
docker run -it --rm -d --name selenoid-ui --link selenoid --network selenoid -p 8080:8080 aerokube/selenoid-ui:latest --selenoid-uri http://examplefqdn.com:8081
docker run --name nginx6 -d -v /etc/ssl_temp:/etc/ssl_temp -p 80:80 -p 443:443 -p 8443:8443 nginx
 

Ниже приведено то, что я попробовал с моим Nginx.conf.

 server {
  listen 80;
  listen 443 ssl;
  listen 8443 ssl;
  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $remote_addr;
  server_name example.com;
  ssl_certificate /etc/ssl_temp/selenoid.pem;
  ssl_certificate_key /etc/ssl_temp/example.com.key;
  location /  {
   proxy_pass http://example.com:8080;
   proxy_connect_timeout      70;
   proxy_read_timeout 86400s;
   proxy_send_timeout 86400s;
   }
   location /browser {
   proxy_pass http://example.com:8081;
   proxy_connect_timeout      70;
   proxy_read_timeout 86400s;
   proxy_send_timeout 86400s;
   }
   location /ws {
   proxy_pass http://example.com:5900;
   proxy_http_version 1.1;

   proxy_set_header Connection 'upgrade';
   chunked_transfer_encoding off;

   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header Host $host;

   proxy_buffering off;
   proxy_cache off;

   proxy_connect_timeout 600;
   proxy_read_timeout 86400s;
   proxy_send_timeout 86400s;
   }
} 
 

Ниже приведена конфигурация моих возможностей:

 DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName("firefox");
        capabilities.setVersion("76 .0");
        capabilities.setCapability("enableVNC", true);
        capabilities.setCapability("enableVideo", true);
        capabilities.setCapability("enableLog", true);
        capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

        RemoteWebDriver driver = new RemoteWebDriver(
                URI.create("https://example.com/wd/hub").toURL(), capabilities);
 

Ниже приведены мои браузеры.json

 {
        "chrome": {
                "default": "86.0",
                "versions": {
                        "86.0": {
                                "image": "selenoid/vnc:chrome_86.0",
                                "port": "4444",
                                "path": "/",
                                "volumes": ["/etc/ssl_temp:/etc/ssl_temp"]
                        }
                }
        },
        "firefox": {
                "default": "60.0",
                "versions": {
                        "60.0": {
                                "image": "selenoid/vnc:firefox_60.0",
                                "port": "4444",
                                "path": "/wd/hub",
                                "volumes": ["/etc/ssl_temp:/etc/ssl_temp"]
                        },
                        "65.0": {
                                "image": "selenoid/vnc:firefox_65.0",
                                "port": "4444",
                                "path": "/wd/hub",
                                "volumes": ["/etc/ssl_temp:/etc/ssl_temp"]
                        },
                        "86.0": {
                                "image": "selenoid/vnc_firefox:86.0",
                                "port": "4444",
                                "path": "/wd/hub",
                                "volumes": ["/etc/ssl_temp:/etc/ssl_temp"]
                        }
                }
        }
}
 

Мы очень ценим любую помощь. Заранее спасибо.

Комментарии:

1. « location /ws { пример proxy_pass.com:5900 ; « Это также должно перейти на порт 8080.

2. Попробую с 8080 и обновлю. Спасибо.

3. Это работает. Обновлено до 8080. Большое спасибо @Ваня-пух

4. Миллион раз спасибо, @ваня-пух. Если бы вы могли добавить это в качестве ответа, я мог бы озвучить его и отметить как принятый ответ.

Ответ №1:

location /ws { proxy_pass example.com:5900;

Это также должно быть отправлено в порт 8080.

Комментарии:

1. Большое спасибо @ваня-пух. Это Работает.