Моя установка состоит в том, что экземпляр Chrome без головы работает на http: // localhost: 9222 . Он работает, если я подключаюсь к нему напрямую через клиент WebSocket.
Я хотел бы поставить перед ним блок сервера Nginx в качестве прокси (позже я добавлю аутентификацию и т. Д.).
Моя конфигурация - это :
server {
# Logic configuration
server_name chrome.example.eu;
access_log /opt/chrome/access.log;
error_log /opt/chrome/error.log;
location / {
proxy_pass http://127.0.0.1:9222;
proxy_http_version 1.1;
proxy_set_header Host $host;
location /devtools/page/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
# Networking
listen 80;
}
HTTP-часть работает нормально. Пользовательский интерфейс Chrome devtools отображается, если я открываю http://chrome.mydomain.eu . Однако соединение с веб-сокетом не может быть установлено.
Браузер пытается подключиться к ws: //chrome.example.eu/devtools/page/6877e641-fc1e-4196-bb55-0c3e1608af4a
, но сервер не обновляется до соединения WebSocket. Nginx отправляет ответ 404, а журнал error.log содержит строку, которую я не могу понять:
* 690 open () " Не сомневайтесь, есть ли у вас другие рекомендации.
Попробовали ли вы установить proxy_pass для вашего дочернего сервера? Насколько я знаю, обработчики контента не наследуются.