У нас есть веб-сайт, на который мы только что добавили сторонние аутентификации, такие как Google, Twitter. Я пытаюсь проверить эти аутентификации на локальном хосте (MacOS).
Я запускаю докер для запуска nginx, вот docker-compose-dev.xml
версия: "3"
Сервисы:
https:
изображение: битнами/nginx: последний
перезапуск: если не остановлен
порты:
- 443:443/TCP
тома:
- ./conf.d/dev.conf:/opt/bitnami/nginx/conf/server_blocks/default.conf:ro
дополнительные_хосты:
- "host.docker.internal: хост-шлюз"
А вот conf.d/dev.conf
:
веселье вверх по течению {
сервер 178.62.87.72:443;
}
сервер {
слушать 443 ssl;
имя_сервера локальный хост;
ssl_certificate /certs/server.crt;
ssl_certificate_key /certs/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers включен;
ssl_session_timeout 1 д;
ssl_stapling выключен;
ssl_stapling_verify выключен;
add_header Strict-Transport-Security max-age=15768000;
add_header X-Frame-Options "";
proxy_ssl_name "www.funfun.io";
proxy_ssl_server_name включено;
местоположение ~ /socialLoginSuccess {
переписать ^ '/#/socialLoginSuccess' перенаправить;
}
расположение ~ /auth/(.*) {
proxy_pass https://funfun/10studio/auth/$1?$query_string;
proxy_set_header Хост localhost;
}
место расположения / {
proxy_set_header Хост $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $ схема;
proxy_set_header Accept-Encoding "";
proxy_set_header Прокси "";
прокси_пасс http://host.docker.internal:3000/;
# Эти три строки добавлены в соответствии с https://github.com/socketio/socket.io/issues/1942 для устранения ошибки socketio.
прокси_http_версия 1.1;
proxy_set_header Обновить $http_upgrade;
proxy_set_header Соединение "обновление";
}
}
Как мы запускаем приложение sudo PORT=8000 HTTPS=true ./node_modules/.bin/react-scripts start
. затем https://локальный:8000/#/знак
в браузере открывается страница, где находятся кнопки аутентификации.
URL-адрес кнопки, связанной с аутентификацией Google, https://localhost/10studio/auth/google
. Нажав на нее, я вижу сначала https://localhost/10studio/auth/google
в адресной строке браузера, но страница для ввода Google ID и пароля не появляется, затем через несколько секунд URL-адрес становится https://localhost/#/socialLoginSuccess
, и на странице отображается 502 Неверный шлюз
. Я вижу следующие журналы в терминале с запущенным nginx:
$ docker-compose --f docker-compose-dev.yml вверх
ВНИМАНИЕ: для этого проекта обнаружены потерянные контейнеры (frontend_10studio_1, frontend_frontend_1). Если вы удалили или переименовали эту службу в своем файле компоновки, вы можете запустить эту команду с флагом --remove-orphans, чтобы очистить ее.
Запуск frontend_https_1... готово
Подключение к интерфейсу_https_1
https_1 | нгинкс 21:24:05.37
https_1 | nginx 21:24:05.38 Добро пожаловать в контейнер Bitnami nginx
https_1 | nginx 21:24:05.38 Подпишитесь на обновления проекта, просматривая https://github.com/bitnami/bitnami-docker-nginx
https_1 | nginx 21:24:05.39 Отправляйте вопросы и запросы функций на https://github.com/bitnami/bitnami-docker-nginx/issues
https_1 | нгинкс 21:24:05.39
https_1 | nginx 21:24:05.39 INFO ==> ** Запуск установки NGINX **
https_1 | nginx 21:24:05.42 INFO ==> Проверка настроек в NGINX_* env vars
https_1 | nginx 21:24:05.43 ИНФОРМАЦИЯ ==> Инициализация NGINX
https_1 | реальный путь: /bitnami/nginx/conf/vhosts: нет такого файла или каталога
https_1 |
https_1 | nginx 21:24:05.45 INFO ==> ** Настройка NGINX завершена! **
https_1 | nginx 21:24:05.47 ИНФОРМАЦИЯ ==> ** Запуск NGINX **
https_1 | 172.19.0.1 - - [08/ноября/2021:21:25:06 +0000] "GET /10studio/auth/google HTTP/1.1" 302 0 "https://localhost:8000/" "Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/ноября/2021:21:25:07 +0000] "GET /auth/google/callback?code=4%2F0AX4XfWiqleRl2StBpNOgOtzjqZlftvq9-uDmiPVLZqcgo2xjjhohu47iAV5qxoJFwwwThaQYzg&scope=email%A%A%apF%3+https .com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+openid&authuser=0&prompt=none HTTP/1.1" 302 82 "https://localhost:8000/" "Mozilla /5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/ноября/2021:21:25:07 +0000] "GET /auth/signinSuccess HTTP/1.1" 302 82 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 172.19.0.1 - - [08/ноября/2021:21:25:07 +0000] "GET /socialLoginSuccess HTTP/1.1" 302 138 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
https_1 | 2021/11/08 21:25:39 [ошибка] 27#27: *2 connect() не удалось (110: время ожидания соединения истекло) при подключении к восходящему каналу, клиент: 172.19.0.1, сервер: localhost, запрос: «GET / HTTP/1.1", восходящий поток: "http://192.168.65.1:3000/", хост: "localhost", реферер: "https://localhost:8000/"
https_1 | 172.19.0.1 - - [08/ноября/2021:21:25:39 +0000] "GET / HTTP/1.1" 502 552 "https://localhost:8000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, как Gecko) Chrome/95.0.4638.54 Safari/537.36" "-"
Кто-нибудь знает, что здесь не так?
Кроме того, когда я отлаживаю nginx, он для меня как черный ящик. Я действительно хочу иметь возможность отслеживать и видеть, какой URL-адрес входит в какой блок местоположения и изменяется на какой URL-адрес (по proxy_pass
или же переписать
, и т.д.). У кого-нибудь есть лучший способ отладить или зарегистрировать это?