Прокси nginx
Когда webman нужно предоставить прямой доступ из внешней сети, рекомендуется добавить прокси nginx перед webman. Это даёт следующие преимущества:
- Статические ресурсы обрабатываются nginx, позволяя webman сосредоточиться на бизнес-логике
- Несколько экземпляров webman могут совместно использовать порты 80 и 443, различая сайты по доменному имени и размещая несколько сайтов на одном сервере
- Позволяет совмещать архитектуры php-fpm и webman
- Прокси nginx с SSL для https проще и эффективнее
- Может строго фильтровать незаконные запросы из внешней сети
Пример прокси nginx
upstream webman {
server 127.0.0.1:8787;
keepalive 10240;
}
server {
server_name домен_сайта;
listen 80;
access_log off;
# Важно: root должен указывать на каталог public в webman, а не на корневой каталог webman
root /your/webman/public;
location / {
try_files $uri @proxy;
}
location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://webman;
}
# Запретить доступ ко всем файлам с расширением .php
location ~ \.php$ {
return 404;
}
# Разрешить доступ к каталогу .well-known
location ~ ^/\.well-known/ {
allow all;
}
# Запретить доступ ко всем файлам и каталогам, начинающимся с .
location ~ /\. {
return 404;
}
}
Как правило, разработчикам достаточно настроить server_name и root фактическими значениями; остальные поля настраивать не нужно.
Внимание
Особенно важно: опция root должна указывать на каталог public в webman. Никогда не указывайте корневой каталог webman, иначе все ваши файлы могут стать доступными для скачивания из интернета, включая конфиденциальные файлы, такие как конфигурация базы данных.