Как получить доступ к веб-сайту, работающему локально, с помощью пользовательского домена и SSL на мобильном телефоне?

У меня есть блог WordPress (WP), работающий локально на моей машине (OSX). Настройка URL-адреса сайта WP установлена ​​на https://abc.dev и я могу получить доступ к сайту без проблем в браузере моей машины.

Визуально это выглядит так:

введите описание изображения здесь

Сайт WP работает через порт 443, и я использую самоподписанный сертификат, чтобы он работал. Я получил самоподписанный сертификат с этого сайта. Я импортировал самоподписанный сертификат в OSX Keychain Access и отметил его Always Trust,

Вот так выглядит мой файл docker-compose.yml для этого WP:

version: '2'
services:
  wordpress:
    build: .
    ports:
      - 8080:80
    volumes:
      - ./config/php.conf.uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
      - ./wp-app:/var/www/html # Full wordpress project
      #- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Plugin development
      #- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme development
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
      - db
    networks:
      - wordpress-network
  db:
    image: mysql:latest
    ports:
      - 127.0.0.1:3306:3306
    command: [
        '--default_authentication_plugin=mysql_native_password',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci'
    ]
    volumes:
      - ./wp-data:/docker-entrypoint-initdb.d
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_ROOT_PASSWORD: password
    networks:
      - wordpress-network
  caddy:
    image: abiosoft/caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    links:
      - wordpress
    volumes:
      - "./Caddyfile:/etc/Caddyfile"
      - "./caddy:/var/caddy"
    networks:
      - wordpress-network
networks:
  wordpress-network:
      driver: bridge

И это Caddyfile:

abc.dev:443
root /var/www/html

tls /var/caddy/cert.pem /var/caddy/key.pem
proxy / wordpress {
    transparent
}

log     stdout
errors  stderr

Древовидная структура выглядит так:

├── Caddyfile
├── caddy
│   ├── cert.pem
│   └── key.pem
└── docker-compose.yml

Открытые порты Docker Compose:

$ lsof -PiTCP -sTCP:LISTEN | grep com.dock

com.docke 497 zz   18u  IPv4 0xc97e1c7b362c847b      0t0  TCP localhost:3306 (LISTEN)
com.docke 497 zz   23u  IPv6 0xc97e1c7b3aa15d0b      0t0  TCP localhost:3306 (LISTEN)
com.docke 497 zz   24u  IPv4 0xc97e1c7b50618b83      0t0  TCP *:8080 (LISTEN)
com.docke 497 zz   25u  IPv6 0xc97e1c7b3aa1624b      0t0  TCP localhost:8080 (LISTEN)
com.docke 497 zz   27u  IPv4 0xc97e1c7b39e63b83      0t0  TCP *:443 (LISTEN)
com.docke 497 zz   28u  IPv4 0xc97e1c7b5061b85b      0t0  TCP *:80 (LISTEN)

Основная причина, почему я открываю wordpress порт в 8080 потому что хотел Кэдди 80 а также 443 порты должны быть открыты. Таким образом, это помогло мне решить проблему конфликтов портов.

Моя проблема сейчас, я хочу получить доступ к сайту WP на моем телефоне, и я хочу, чтобы URL был https://abc.dev как и в телефоне.

Последние несколько дней я возился с прокси Squid и Mitmproxy и не нашел удачи.

Некоторые из вещей, которые я пробовал в общем:

  1. Настройте прокси с помощью SquidMan
  2. Настройка Mitmproxy работает reverse Режим
  3. Настройка Mitmproxy работает upstream Режим
  4. Установите и доверяйте сертификату Mitmproxy в моем телефоне
  5. Установите виртуальную машину Ubuntu 18 Server на моем компьютере (OSX) с помощью VirtualBox, установите Mitmproxy, запустите Mitmproxy, настройте хост (OSX) и телефон, чтобы использовать этот сервер Ubuntu 18 в качестве прокси

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

Я не хочу менять настройки URL сайта WP на другой URL, т.е. http://localhost[:port] или же https://localhost[:port] потому что он отлично работает на моей машине.

Кроме того, я хочу, чтобы мои настройки выглядели и вели себя так же близко, как и мой производственный веб-сайт, который работает с той же структурой URL, https://example.com,

Я нашел CharlesProxy, но мне это не нравится, потому что это платное программное обеспечение. Я уверен, что Squid, Mitmproxy и некоторые другие инструменты могут помочь мне в этом. Я просто не уверен, как это сделать.

Действительно ценю за любую помощь и указатели.

1 ответ

Решение

Ответ

Сначала убедитесь, что ваша проблема только в DNS. Вы должны иметь возможность подключаться к веб-сайту со своего телефона по IP- адресу вашего компьютера http: // COMPUTER_IP. Если вы не можете загрузить веб-сайт, проверьте брандмауэр.

Ваш локальный компьютер знает abc.dev и разрешите его локальному хосту.

Но это не относится к чужим хостам в домашней сети. Другой Windows/Mac/Linux нужно только добавить запись домена в файл hosts. В Linux это может выглядеть так

/ и т.д. / хосты

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
COMPUTER_IP abc.dev

Но для телефонов нелегко управлять пользовательскими записями DNS из соображений безопасности.

Одно из возможных решений - использовать существующий DNS-сервер дома:

Если ваш домашний маршрутизатор может добавлять статические записи DNS. Добавьте настраиваемую запись DNS в домашнем маршрутизаторе, чтобы указать abc.dev на IP-адрес домашней сети вашего компьютера.

Второе возможное решение - использовать онлайн-сервис DNS:

Этот не использует abc.dev Но что-то, что предлагает онлайн-сервисы, например на https://www.noip.com/ вы можете зарегистрировать что-то вроде abc1234.ddns.net, затем установите COMPUTER_IP в качестве IP для этого домена. В caddy вы используете тот же домен abc1234.ddns.net,

Таким образом, ваш телефон спросит noip для IP abc1234.ddns.net он отвечает на ваш COMPUTER_IP и браузер подключается к вашему компьютеру.

Третье возможное решение:

  1. Разверните свой DNS-сервер с помощью docker-compose вместе с WordPress.
  2. Настройте свой COMPUTER_IP в качестве DNS-сервера в своем телефоне.

Чтобы попробовать это, добавьте эти файлы в ваш проект docker-compose.

dnsmasq/dnsmasq.conf - это рабочий файл конфигурации, но вам нужно изменить последнюю строку:

address=/abc.dev/COMPUTER_IP

Укажите IP-адрес вашего компьютера вместо COMPUTER_IP.

структура каталогов с вашим docker-compose.yml:

docker-compose.yml
dnsmasq/dockerfile
dnsmasq/dnsmasq.conf
... other files

ваш докер-compose.yml

version: '2'
services:
    wordpress:
        ...
    db:
        ...
    caddy:
        ...
    dnsmasq:
        build:
            context: .
            dockerfile: ./dnsmasq/dockerfile
        ports:
            - "53:53/udp"
        cap_add:
            - NET_ADMIN
    ...

Dnsmasq/dockerfile

FROM andyshinn/dnsmasq

COPY dnsmasq/dnsmasq.conf /etc/dnsmasq.conf

CMD ["--log-facility", "-"]

Dnsmasq/dnsmasq.conf

# default dnsmasq config file
# Never forward plain names (without a dot or domain part)
domain-needed
# Never forward addresses in the non-routed address spaces.
bogus-priv
# use DNS server 8.8.8.8 for all except abc.dev
# you can use IP of your home router
server=8.8.8.8
no-hosts
expand-hosts
user=dnsmasq
group=dnsmasq
cache-size=2048
neg-ttl=60
log-queries

# put IP address of your computer instead COMPUTER_IP
address=/abc.dev/COMPUTER_IP

Для получения дополнительной информации о конфигурации dnsmasq смотрите man-страницу.

Другие вопросы по тегам