translate /config/transports/grpc.md
							parent
							
								
									5d83a8fe73
								
							
						
					
					
						commit
						0adc98a792
					
				| 
						 | 
				
			
			@ -0,0 +1,126 @@
 | 
			
		|||
# gRPC
 | 
			
		||||
 | 
			
		||||
Режим передачи данных, основанный на HTTP/2, полностью соответствует стандарту HTTP/2 и может быть ретранслирован другими HTTP-серверами (такими как Nginx).
 | 
			
		||||
 | 
			
		||||
gRPC (HTTP/2) имеет встроенное мультиплексирование, не рекомендуется включать mux.cool при использовании gRPC и HTTP/2.
 | 
			
		||||
 | 
			
		||||
::: warning ⚠⚠⚠
 | 
			
		||||
 | 
			
		||||
- gRPC не поддерживает указание Host. Пожалуйста, укажите **правильное доменное имя** в адресе исходящего прокси или укажите `ServerName` в `(x)tlsSettings`, иначе подключение не будет установлено.
 | 
			
		||||
- gRPC не поддерживает fallback на другие сервисы.
 | 
			
		||||
- Существует риск активного сканирования сервисов gRPC. Рекомендуется использовать обратный прокси-сервер, такой как Caddy или Nginx, для предварительного разделения трафика по пути.
 | 
			
		||||
  :::
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Если вы используете обратный прокси-сервер, такой как Caddy или Nginx, обратите внимание на следующие моменты:
 | 
			
		||||
 | 
			
		||||
- Убедитесь, что на обратном прокси-сервере включен HTTP/2.
 | 
			
		||||
- Используйте HTTP/2 или h2c (Caddy), grpc_pass (Nginx) для подключения к Xray.
 | 
			
		||||
- Путь в обычном режиме: `/${serviceName}/Tun`, в режиме Multi: `/${serviceName}/TunMulti`.
 | 
			
		||||
- Если необходимо получать IP-адрес клиента, его можно передать через заголовок `X-Real-IP`, отправленный Caddy / Nginx.
 | 
			
		||||
  :::
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Если вы используете fallback, обратите внимание на следующие моменты:
 | 
			
		||||
 | 
			
		||||
- Не рекомендуется использовать fallback на gRPC, так как существует риск активного сканирования.
 | 
			
		||||
- Убедитесь, что `h2` находится на первом месте в (x)tlsSettings.alpn, иначе gRPC (HTTP/2) может не завершить TLS-рукопожатие.
 | 
			
		||||
- gRPC не поддерживает маршрутизацию на основе path с помощью Xray.
 | 
			
		||||
  :::
 | 
			
		||||
 | 
			
		||||
## GRPCObject
 | 
			
		||||
 | 
			
		||||
`GRPCObject` соответствует элементу `grpcSettings` конфигурации передачи.
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
{
 | 
			
		||||
  "authority": "grpc.example.com",
 | 
			
		||||
  "serviceName": "name",
 | 
			
		||||
  "multiMode": false,
 | 
			
		||||
  "user_agent": "custom user agent",
 | 
			
		||||
  "idle_timeout": 60,
 | 
			
		||||
  "health_check_timeout": 20,
 | 
			
		||||
  "permit_without_stream": false,
 | 
			
		||||
  "initial_windows_size": 0
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> `authority`: string
 | 
			
		||||
 | 
			
		||||
Строка, которая может использоваться как Host для реализации некоторых других целей.
 | 
			
		||||
 | 
			
		||||
> `serviceName`: string
 | 
			
		||||
 | 
			
		||||
Строка, указывающая имя сервиса, **аналогично** пути в HTTP/2.
 | 
			
		||||
Клиент будет использовать это имя для связи, а сервер будет проверять, совпадает ли имя сервиса.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Когда `serviceName` начинается с косой черты, можно настроить собственный путь, используя как минимум две косые черты.<br>
 | 
			
		||||
Например, если на сервере указано `"serviceName": "/my/sample/path1|path2"`, то на клиенте можно указать `"serviceName": "/my/sample/path1"` или `"/my/sample/path2"`.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
> `user_agent`: string
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
**Необходимо настроить только** в `outbound` **(клиент)**.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
Установка пользовательского агента gRPC, может предотвратить блокировку трафика gRPC некоторыми CDN.
 | 
			
		||||
 | 
			
		||||
> `multiMode`: true | false <Badge text="BETA" type="warning"/>
 | 
			
		||||
 | 
			
		||||
`true` включает `multiMode`, значение по умолчанию: `false`.
 | 
			
		||||
 | 
			
		||||
Это **экспериментальная** опция, которая может быть удалена в будущем, и ее совместимость между версиями не гарантируется. Этот режим может обеспечить прирост производительности примерно на 20% **в тестовой среде**, фактическая производительность зависит от скорости передачи.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
**Необходимо настроить только** в `outbound` **(клиент)**.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
> `idle_timeout`: number
 | 
			
		||||
 | 
			
		||||
Проверка работоспособности выполняется, если в течение определенного периода времени, измеряемого в секундах, не происходит передача данных. Если это значение меньше `10`, то в качестве минимального значения будет использоваться `10`.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Если не используется обратный прокси-сервер, такой как Caddy или Nginx (**обычно не используется**), и это значение установлено меньше `60`, сервер может отправить непредвиденный кадр h2 GOAWAY, чтобы закрыть существующее соединение.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
По умолчанию проверка работоспособности **отключена**.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
**Необходимо настроить только** в `outbound` **(клиент)**.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Может решить некоторые проблемы с "обрывом" соединения.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
> `health_check_timeout`: number
 | 
			
		||||
 | 
			
		||||
Время ожидания ответа проверки работоспособности в секундах. Если в течение этого времени проверка работоспособности не будет завершена и по-прежнему не будет передачи данных, проверка работоспособности будет считаться неудачной. Значение по умолчанию: `20`.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
Настройка требуется **только** на стороне **исходящего соединения** (**клиента**).
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
> `permit_without_stream`: true | false
 | 
			
		||||
 | 
			
		||||
`true` разрешает проверку работоспособности, если нет дочерних подключений. Значение по умолчанию: `false`.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
**Необходимо настроить только** в `outbound` **(клиент)**.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
> `initial_windows_size`: number
 | 
			
		||||
 | 
			
		||||
Начальный размер окна h2 Stream. Если значение меньше или равно `0`, эта функция не действует. Если значение больше `65535`, механизм динамического окна будет отключен. Значение по умолчанию: `0`, то есть не действует.
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
**Необходимо настроить только** в `outbound` **(клиент)**.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
::: tip
 | 
			
		||||
При использовании CDN Cloudflare можно установить значение `65536` или выше, чтобы отключить механизм динамического окна, что предотвратит отправку непредвиденных кадров h2 GOAWAY CDN Cloudflare для закрытия существующего соединения.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue