Если вы хотите настроить Nginx таким образом, чтобы один домен (syqq.ru в вашем случае) мог обрабатывать обычные HTTP запросы и вебсокет соединения, вам нужно добавить конфигурации для каждого типа соединения.
Вот как может выглядеть базовая конфигурация server-блока в nginx для вашего сценария:
```nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket_backend {
server 127.0.0.1:PORT_WEBSOCKET;
}
upstream authorization_backend {
server 127.0.0.1:PORT_AUTHORIZATION;
}
server {
listen 80;
server_name syqq.ru;
# Обычные HTTP запросы
location / {
proxy_pass http://authorization_backend;
# Стандартные параметры проксирования для установления корректного соединения
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Путь для вебсокет соединений
location /ws {
proxy_pass http://websocket_backend;
proxy_http_version 1.1;
# Устанавливаем заголовки для обработки вебсокетов
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Стандартные параметры проксирования для установления корректного соединения
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
Важные моменты в этой конфигурации:
1. `map` директива используется для определения значения переменной `$connection_upgrade` на основе заголовка `Upgrade` из клиентского запроса, который используется для вебсокетов.
2. `upstream` директивы определяют группы серверов (ваш локальный сервер авторизации и вебсокет сервер). Вам потребуется заменить `PORT_WEBSOCKET` и `PORT_AUTHORIZATION` на реальные порты, где работают ваши серверы.
3. В `location /ws` блоке настраивается проксирование для вебсокет соединений. Этот блок указывает на то, что все запросы на путь `/ws` должны быть перенаправлены на вебсокет сервер. Заголовки `Upgrade` и `Connection` настроены для поддержки вебсокет протокола.
4. В остальном `location /` блоке настраивается проксирование для всех остальных HTTP запросов, которые будут направлены на сервер авторизации.
Не забудьте заменить `PORT_WEBSOCKET` и `PORT_AUTHORIZATION` на собственные порты, а также проверьте, что пути (`/` для авторизации и `/ws` для вебсокетов) не конфликтуют между собой. После применения этих изменений не забудьте перезагрузить Nginx:
```bash
sudo systemctl reload nginx
```
или
```bash
sudo service nginx reload
```
Эти изменения позволят одновременно работать с серверами авторизации и вебсокетов на том же домене с использованием Nginx в качестве прокси-сервера.