На сервере есть два nginx
: внешний, он доступен из интернета, и внутренний, он запущен в контейнере docker
.
Внешний nginx
проксирует запрос во внутренний, настраивается вручную. Пример конфигурации:
server {
listen 80;
server_name test.site.ru;
location / {
proxy_pass http://192.168.10.13;
include proxy_params;
}
}
Внутренний nginx
проксирует запрос в другой docker контейнер с php-fpm
. Настраивается автоматически при деплое. Пример конфигурации:
upstream backend {
server php:9000;
server spare:9000;
}
server {
listen 80 default_server;
server_name test.site.ru;
location ~ ^/app\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_pass backend;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /srv/web$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /srv/web;
internal;
}
}
В итоге в PHP мы имеем следующее:
$_SERVER['HTTP_X_FORWARDED_PROTO'] => http
$_SERVER['HTTP_X_FORWARDED_FOR'] => тут мой IP
$_SERVER['HTTP_X_REAL_IP'] => тут тоже мой IP
$_SERVER['SERVER_ADDR'] => 192.168.10.13
$_SERVER['REMOTE_ADDR'] => 192.168.10.1
Очень хочется, чтобы и внутренний nginx
и php
не думали про то, что есть ещё какой внешний nginx
, и чтобы nginx
в логах имел реальные IP адреса, и чтобы в $_SERVER['REMOTE_ADDR']
был мой IP, а не IP-адрес Gateway из подсети docker. Как это сделать?
Я знаю про существование модуля ngx_http_realip_module для nginx
, но на этом мои знания заканчиваются, и я не знаю как его установить внутрь контейнера docker в nginx:alpine
. Быть может есть ещё какие-то варианты решения?
Здравствуйте! Можно ли используя php запустить несколько разных циклов одновременно?
Доброго времени суток, товарищи гуру-программистыСобственно нужно чтоб ЭТО считало количество строк в таблице и выводило их последовательно...
Собрал регулярное выражение [\\\]+[nfvabrt0]{1} для замены некоторых символов (\n, \t, \0 и тд
В стандарте HTTP есть 3 составляющие: стартовая строка, заголовки и тело