LINUX.ORG.RU
решено ФорумAdmin

Как получить IP адрес клиента при proxy_pass на localhost в пределах одного сервера

 , ,


0

1

Всем привет. Не могу понять как решить мне эту задачу при выше указаных условиях в названии темы.

Конфиг Nginx:

upstream etherpad-lite {
    server 127.0.0.1:9001;
}

server {
    listen 443 ssl;
    server_name spexfy.xyz;
    
    access_log /var/log/virtualmin/spexfy.xyz_access_log;
    error_log /var/log/virtualmin/spexfy.xyz_error_log;
    
    ssl_certificate /home/spexfy/ssl.combined;
    ssl_certificate_key /home/spexfy/ssl.key;
    
    if ($host !~* "^spexfy\.xyz$") {
    	return 444;
    }
    
    location / {
        proxy_pass http://etherpad-lite;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

Знаю что для перердачи в блок location нужно добавить:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

А для того чтобы словить в блоке server нужно указать:

set_real_ip_from IP_SERVERA_OT_KUDA_IDET_PROXY;
real_ip_header X-Real-IP;

Здесь как раз и не понятно, как быть если проксирование в пределах одного сервера.

На 127.0.0.1:9001 висит сервис, собственно куда и делаю проксирование.

Нет разницы в рамках локалхоста или по сети. Всё равно запросы проксируются через TCP/IP (вообще можно ещё через unix-сокет, но это не твой случай) и у пакета от прокси есть source IP адрес. Его-то и нужно указывать в качестве «IP_SERVERA_OT_KUDA_IDET_PROXY». В случае с локалхостом это будет 127.0.0.1

MrClon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.