Unity 6.3
0 онлайн 25 гостей 3 в системе
Вход

Настройка конфигурации сервера Nginx для веб-компилирования

Настройте файл конфигурации сервера Nginx для использования сервера Nginx с веб-сборками Unity.

Вы можете использовать Nginx для быстрого и эффективного обслуживания веб-контента, созданного с помощью Unity.

Полный пример кода со всеми типами файлов и типами сжатия см. в Полный пример кода со всеми типами файлов.

Информацию о сервере Nginx и о том, как его установить, см. в Документация Nginx.

Измените файл конфигурации сервера Nginx для использования с Unity

Добавьте следующую конфигурацию в существующую конфигурацию сервера HTTP.

http {
# ...

server {

# Nest inside existing location rule
location / {
# ...

Теперь вы готовы добавить код, специфичный для вашей сборки, а также типы файлов и типы сжатия, которые вы хотите использовать на сервере.

Добавление предварительно сжатых файлов Brotli в файл конфигурации

Чтобы обеспечить эффективное предоставление клиентам предварительно сжатых файлов всех типов, вам необходимо добавить некоторый код в конфигурацию сервера. Но код будет зависеть от типа файла (файлы данных, файлы JavaScript или файлы WebAssembly).

Обработка запросов на файлы данных

Для дисковых файлов данных, предварительно сжатых методом Brotli (данные, символы и файлы .json), добавьте следующий код:

location ~ .+\.(data|symbols\.json)\.br$ {
    gzip off;
    add_header Content-Encoding br;
    default_type application/octet-stream;
}

Поскольку этот файл уже предварительно сжат на диске, этот код отключает сжатие по требованию на нем. В противном случае Nginx попытается произвести двойное сжатие.

Обработка запросов на кодовые файлы JavaScript

Для находящихся на диске кодовых файлов JavaScript, предварительно сжатых с помощью Brotli, добавьте следующий код:

location ~ .+\.js\.br$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding br;
    default_type application/javascript;
}

Обработка запросов на файлы WebAssembly

Для дисковых файлов WebAssembly, предварительно сжатых с помощью Brotli, добавьте следующий код:

location ~ .+\.wasm\.br$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding br;
    # Enable streaming WebAssembly compilation by specifying the correct MIME type for
    # Wasm files.
    default_type application/wasm;
}

Добавление предварительно сжатых файлов gzip в файлы конфигурации

Чтобы обеспечить эффективное предоставление клиентам предварительно сжатых gzip файлов всех типов, вам необходимо добавить некоторый код в конфигурацию сервера. Но код будет зависеть от типа файла (файлы данных, файлы JavaScript или файлы WebAssembly).

Обработка запросов на файлы данных

Для дисковых файлов данных, предварительно сжатых с помощью gzip, добавьте следующий код:

location ~ .+\.(data|symbols\.json)\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip;
    default_type application/gzip;
}

Обработка запросов на кодовые файлы JavaScript

Для дисковых файлов JavaScript, предварительно сжатых gzip, добавьте следующий код:

location ~ .+\.js\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip; # The correct MIME type here would be application/octet-stream, but due to Safari bug https://bugs.webkit.org/show_bug.cgi?id=247421, it's preferable to use MIME Type application/gzip instead.
    default_type application/javascript;
}

Обработка запросов на файлы WebAssembly:

Для дисковых файлов WebAssembly, предварительно сжатых gzip, добавьте следующий код:

location ~ .+\.wasm\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip;
    # Enable streaming WebAssembly compilation by specifying the correct MIME type for
    # Wasm files.
    default_type application/wasm;
}

Добавить C/C++ многопоточной поддержки

Если вы создали проект с Включить нативную многопоточность C/C++ активированным в Игрок настройки, вам необходимо установить заголовки сервера. Эти заголовки включают в себя Cross-Origin Opener Policy (COOP), Cross-Origin Embedded Policy (COEP) и Cross-Origin Resource Policy (CORP).

Добавьте следующий код в файл конфигурации:

 location ~ .+\.(htm|html|js|js\.gz|js\.br)$ {
     add_header Cross-Origin-Opener-Policy same-origin;
     add_header Cross-Origin-Embedder-Policy require-corp;
     add_header Cross-Origin-Resource-Policy cross-origin;
 }

Разрешить запросы на общий доступ к ресурсам из разных источников (необязательно)

Cross-Origin Resource Sharing (CORS) — это функция безопасности веб-браузера, которая контролирует, как веб-приложения могут запрашивать ресурсы. CORS помогает предотвращать несанкционированные запросы от вредоносных веб-сайтов, что защищает конфиденциальные данные.

Чтобы разрешить запросы CORS во взаимодействии с сервером, добавьте следующий код в файл конфигурации:

add_header Access-Control-Allow-Origin *;

Полный пример кода со всеми типами файлов

Ниже приведен пример кода с добавлением всех типов файлов.

http {
# ...

server {

# Add the following config within the existing http server configuration
# Nest inside existing location rule
location / {
# ...

# On-disk Brotli-precompressed data files should be served with compression enabled:
location ~ .+\.(data|symbols\.json)\.br$ {
    # Because this file is already pre-compressed on disk, disable the on-demand compression on it.
    # Otherwise nginx would attempt double compression.
    gzip off;
    add_header Content-Encoding br;
    default_type application/octet-stream;
}

# On-disk Brotli-precompressed JavaScript code files:
location ~ .+\.js\.br$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding br;
    default_type application/javascript;
}

# On-disk Brotli-precompressed WebAssembly files:
location ~ .+\.wasm\.br$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding br;
    # Enable streaming WebAssembly compilation by specifying the correct MIME type for
    # Wasm files.
    default_type application/wasm;
}

# On-disk gzip-precompressed data files should be served with compression enabled:
location ~ .+\.(data|symbols\.json)\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip;
    default_type application/gzip;
}

# On-disk gzip-precompressed JavaScript code files:
location ~ .+\.js\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip; # The correct MIME type here would be application/octet-stream, but due to Safari bug https://bugs.webkit.org/show_bug.cgi?id=247421, it's preferable to use MIME Type application/gzip instead.
    default_type application/javascript;
}

# On-disk gzip-precompressed WebAssembly files:
location ~ .+\.wasm\.gz$ {
    gzip off; # Do not attempt dynamic gzip compression on an already compressed file
    add_header Content-Encoding gzip;
    # Enable streaming WebAssembly compilation by specifying the correct MIME type for
    # Wasm files.
    default_type application/wasm;
}

# Uncomment the following lines if build was created with "Enable Native C/C++ Multithreading" player settings
# location ~ .+\.(htm|html|js|js\.gz|js\.br)$ {
#     add_header Cross-Origin-Opener-Policy same-origin;
#     add_header Cross-Origin-Embedder-Policy require-corp;
#     add_header Cross-Origin-Resource-Policy cross-origin;
# }

# Uncomment the following line to allow CORS requests
# add_header Access-Control-Allow-Origin *;

}
}
}

Дополнительные ресурсы