Конфигурация nginx, прокси-сервер websocket, местоположение, если

У меня есть очень конкретный вопрос о конфигурации nginx:

Мне нужен nginx для:

  • прокси-соединения веб-сокета @ /
  • ответьте с помощью index.html для стандартных http-запросов @/

Это самое близкое, что я могу получить:

  location = / {
   if ($http_upgrade != "websocket") {
    # Here lies my problem:
    # This returns a http: 302 where i just need it to return the contents
    # of index.html
    return https://admin.permaconn.com/index.html;
   }

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_pass http://localhost:8080;
  }

В моем приложении происходят структурные изменения: вместо использования nodejs в качестве внешнего прокси-сервера используется nginx в качестве внешнего прокси-сервера.

Я должен настроить nginx таким образом из-за ожидаемого поведения многочисленных программ, уже установленных на устройствах (также известных как устаревшие).


person Roderick Obrist    schedule 05.03.2013    source источник


Ответы (1)


Вы неправильно используете директиву return.

location = / {
    index index.html;

    if ($http_upgrade = "websocket") {
        proxy_pass http://localhost:8080;  
    }

    proxy_http_version 1.1;
    proxy_set_header Upgrade websocket;
    proxy_set_header Connection upgrade;
}

Документы:

person VBart    schedule 06.03.2013