Как проверить исходящий IP сервера в ThinkPHP

Автор:Lisa Farrell · 2026-06-01

В проекте ThinkPHP серверный вызов https://my.ipin.io/info проверяет исходящий IP, который сервер использует при выходе в интернет. Такой сценарий подходит для диагностики, проверки прокси и подтверждения региона cloud-сервера.

Описание API

Серверный вызов проверяет исходящий IP сервера и возвращает IP, страну, регион и город, с которыми сервер виден в публичной сети.

{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}

Сценарии применения

Эти сценарии показывают ценность IP-интерфейса и четко разделяют IP сервера и IP посетителя.

  • Эти сценарии показывают ценность IP-интерфейса и четко разделяют IP сервера и IP посетителя.
  • Как проверить исходящий IP сервера в ThinkPHP
  • Описание API
  • Рекомендации по SEO и UX

Логика реализации

Перед реализацией определите инициатора запроса: серверные запросы возвращают IP сервера, браузерные — IP посетителя.

  • Перед реализацией определите инициатора запроса: серверные запросы возвращают IP сервера, браузерные — IP посетителя.
  • Серверный вызов проверяет исходящий IP сервера и возвращает IP, страну, регион и город, с которыми сервер виден в публичной сети.
  • Все примеры ниже напрямую используют https://my.ipin.io/info, комментарии и тексты интерфейса локализованы.
  • Контент по умолчанию должен быть полным и читаемым, а региональный контент — улучшением. Поисковые системы получают стабильный контент, а страница остается рабочей при сбое API.

Пример кода

Все примеры ниже напрямую используют https://my.ipin.io/info, комментарии и тексты интерфейса локализованы.

ThinkPHP Controller

<?php
namespace app\controller;

use app\BaseController;

class IpController extends BaseController
{
    public function server()
    {
        $default = [
            'ip' => 'Неизвестно',
            'country' => 'Неизвестно',
            'region' => 'Неизвестно',
            'city' => 'Неизвестно',
        ];

        try {
            // Серверный вызов /info проверяет исходящий IP сервера.
            $json = @file_get_contents('https://my.ipin.io/info');
            $data = json_decode($json, true);
            $info = is_array($data) ? array_merge($default, $data) : $default;
        } catch (\Throwable $e) {
            $info = $default;
        }

        return view('server_ip', ['info' => $info]);
    }
}

server_ip.html

<div class="ip-card">
  <h2>Исходящий IP сервера</h2>
  <p>IP:{$info.ip|default='Неизвестно'}</p>
  <p>Country:{$info.country|default='Неизвестно'}</p>
  <p>Region:{$info.region|default='Неизвестно'}</p>
  <p>City:{$info.city|default='Неизвестно'}</p>
</div>

Рекомендации по SEO и UX

Контент по умолчанию должен быть полным и читаемым, а региональный контент — улучшением. Поисковые системы получают стабильный контент, а страница остается рабочей при сбое API.

Частые ошибки

Следующие проблемы влияют на точность статьи, применимость кода и доверие к описанию API.

  • Следующие проблемы влияют на точность статьи, применимость кода и доверие к описанию API.
  • Контент по умолчанию должен быть полным и читаемым, а региональный контент — улучшением. Поисковые системы получают стабильный контент, а страница остается рабочей при сбое API.
  • Перед реализацией определите инициатора запроса: серверные запросы возвращают IP сервера, браузерные — IP посетителя.
  • Эти сценарии показывают ценность IP-интерфейса и четко разделяют IP сервера и IP посетителя.

Итог

Серверный вызов проверяет исходящий IP сервера и возвращает IP, страну, регион и город, с которыми сервер виден в публичной сети.

Частые вопросы

Вопросы ниже подготовлены специально для этой статьи и напрямую связаны с реализацией.

Вопрос:Почему важно различать сторону запроса?
Ответ:Серверный вызов представляет сервер, а браузерный вызов представляет посетителя.
Вопрос:Зачем нужен контент по умолчанию?
Ответ:Он защищает SEO, первый рендер и случаи, когда API не отвечает.
Вопрос:Можно добавить больше стран?
Ответ:Да, добавьте коды стран в mapping-таблицу.
Вопрос:Меняется ли backend-логика?
Ответ:Нет, если вы отдельно не добавляете серверную логику.
Вопрос:Что делать при ошибке API?
Ответ:Страница должна сохранить контент, ссылку или сообщение по умолчанию.