WordPress видит локальный IP посетителей. Как это исправить, чтобы были видны внешние IP посетителей?

Ссылка скопирована
1 ответ

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

    WordPress видит локальный IP посетителей. Как это исправить, чтобы были видны внешние IP посетителей?

Настройки докер компос в студию. Возможно поможет есть указать в файле конфига компоса - 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:, чтобы оригинальный адрес клиента пробрасывался в заголовке запроса.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Для того чтобы 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 адреса посетителей. Пожалуйста, убедитесь, что вы делаете изменения на сервере с осторожностью, чтобы избежать непредвиденных проблем.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно