WordPress видит локальный IP посетителей. Как это исправить, чтобы были видны внешние IP посетителей?
Вот такая наблюдается проблема, когда тут должен быть внешний IP, а показывается Gateway Docker контейнеров!
Есть контейнеры WordPress, БД и Traefik (он тут скорее всего не при чем, я пробовал напрямую подключаться к WP, ничего не поменялось). Все контейнеры подключены к одной bridge сети.
Кстати, при каждом перезапуске контейнеров, 172.х.0.1 меняется на +1 (172.28.0.1 => 172.29.0.1 и так далее). Если это норма - забейте, я не опытный в этом.
Пожалуйста, если вы даете решение проблемы - давайте его по подробнее, то есть какие команды вводить, где что куда как и так далее.
Дополнительно:
Ответы:
Traefik должен и так пересылать и X-Real-IP и X-Forwardeed-For содержащие реальный IP клиента, то есть остаётся только на целевом сервере настроить их правильную обработку: для Nginx ngx_http_realip_module, для Apache mod_remoteip.
- Не работает, пробовал такой код в /etc/apache2/apache2.conf:
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so RemoteIPHeader X-Real-IP RemoteIPTrustedProxy 172.0.0.0/8
LoadModule remoteip_module /usr/lib/apache2/modules/mod_remoteip.so RemoteIPHeader X-Real-IP RemoteIPTrustedProxy 172.0.0.0/8
- Имя Фамилия, а если RemoteIPHeader X-Forwarded-For?
- Александр Карабанов, К сожалению, это тоже не решило мою проблему.
- Имя Фамилия, понятно. Сними изоляцию с сети для Traefik.
- Александр Карабанов,
ports: - target: 80 published: 80 mode: host - target: 443 published: 443 mode: host
ports: - target: 80 published: 80 mode: host - target: 443 published: 443 mode: host
Настройки докер компос в студию. Возможно поможет есть указать в файле конфига компоса - network host
Ну и конфиг траефика какой? У него есть параметры для передачи реального ip
- Мне network host не очень подходит, порты не открылись и нету изоляции.
traefik.yml:api: dashboard: false entryPoints: http: address: ":80" # forwardedHeaders: # trustedIPs: # - "172.10.0.0/12" http: redirections: entryPoint: to: https scheme: https https: address: ":443" providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false certificatesResolvers: letsEncrypt: acme: email: example@email.com storage: acme.json caServer: "https://acme-staging-v02.api.letsencrypt.org/directory" httpChallenge: entryPoint: http
api: dashboard: false entryPoints: http: address: ":80" # forwardedHeaders: # trustedIPs: # - "172.10.0.0/12" http: redirections: entryPoint: to: https scheme: https https: address: ":443" providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false certificatesResolvers: letsEncrypt: acme: email: example@email.com storage: acme.json caServer: "https://acme-staging-v02.api.letsencrypt.org/directory" httpChallenge: entryPoint: http
То что закомментировано - попытка решить проблему
- ну так а что вы хотите, вы используете сокет ендпоинт, вы даже https организовали на уровне докер провайдера, то есть клиент не подключается к веб серверу вордпресса, а идет через "прокси".
Можно поиграться хотя бы с # forwardedHeaders:, чтобы оригинальный адрес клиента пробрасывался в заголовке запроса.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Для того чтобы WordPress видел внешние IP посетителей вместо локальных IP, необходимо сделать некоторые настройки на сервере и в самом WordPress.
1. Настройка сервера:
- Если вы используете прокси-сервер, убедитесь, что он правильно настроен для передачи IP адресов. Обычно это делается с помощью заголовка X-Forwarded-For.
- Если у вас есть доступ к конфигурационному файлу сервера (например, Apache или Nginx), вы можете добавить следующую строку для передачи IP адреса:
Для Apache:
```
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
RequestHeader setifempty X-Forwarded-For %{REMOTE_ADDR}e env=forwarded
```
Для Nginx:
```
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
```
2. Настройка WordPress:
- Добавьте следующий код в файл functions.php вашей темы или в файл плагина, который используется на вашем сайте:
```php
if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
```
Этот код позволит WordPress использовать переданный через прокси IP адрес.
После выполнения этих шагов, WordPress должен правильно видеть внешние IP адреса посетителей. Пожалуйста, убедитесь, что вы делаете изменения на сервере с осторожностью, чтобы избежать непредвиденных проблем.