Назад | Перейти на главную страницу

nginx http (из приложения для Android) не работает. Https работает нормально, а http был / работает нормально в apache

Обновить: Извини, моя ошибка. Для Android 8+ в файле androidManifest.xml должно быть указано ClartextTraffic = true, чтобы http работал. Это было сделано / присутствует в моем приложении, но после включения https и настройки домена я удалил это, поскольку в этом больше не было необходимости. Но когда я снова начал тестирование с http, он не подключался, так как эта запись отсутствовала. Я совсем забыл об этой части.

В любом случае, я снова попытался со своим старым сервером apache, чтобы убедиться, что он работает, после того, как не обнаружил ошибок в nginxerror.log. Это тоже не сработало. Затем я понял, что что-то изменилось на стороне приложения, и сравнил с историей, чтобы проверить, какие изменения я внес.

Оглядываясь назад, я должен был знать раньше, что http работает / подключается нормально через браузер. Забавно, что если бы я попробовал напрямую через балансировщик нагрузки, он бы работал правильно, поскольку приложение будет использовать https, и этот параметр не требуется. В любом случае, потрачено зря два дня, но урок усвоен. :). Спасибо @JonnieJS за помощь / ответ.

Исходный номер: У меня есть приложение laravel / php, которое отлично работало в apache, но я подумал, что лучше перейти на nginx для поддержки более крупных одновременных пользователей.

При попытке через http журнал доступа nginx полностью пустой, а журнал ошибок показывает однострочное уведомление о том, что процесс сигнала запущен. При включении отладки я также получаю строки событий epoll add. Журнал Laravel также пуст.

Забавно то, что когда я пробую через браузер (даже с http), я получаю страницу laravel по умолчанию (я не могу проверить само приложение, поскольку оно только мобильное). Приложение использует okhttp для подключения, так что это может быть связано с этим. curl -v показывает аналогичный ответ и страницу html.

Это мой файл конфигурации (домен / папка изменены. Сервер перезапущен и несколько раз протестирован после изменений). Файл конфигурации nginx по умолчанию не связан.

Есть идеи, в чем может быть проблема или как ее решить?

Я бы предложил такой план:

Балансировщик нагрузки AWS с SSL-сертификатами, выданными через порт 443 AMAZON. Это прервет SSL (HTTPS), и вам больше не нужно об этом заботиться. Целевая группа будет передавать весь трафик через порт 80 (HTTP) экземпляру с NGINX.

Для конфигурации ищите это: https://laravel.com/docs/5.7/deployment#nginx

Фактический экземпляр должен разрешать трафик только от балансировщика нагрузки - с его частного IP-адреса. Это предотвратит обход вашего ELB.

Если Laravel ошибочно считает, что все URL-адреса должны использовать http:// вместо того https:// вы можете попробовать посмотреть на URL::forceSchema('https');

Редактировать:

Подробнее читайте здесь: https://aws.amazon.com/blogs/aws/elastic-load-balancer-support-for-ssl-termination/

Чтобы прояснить это:

  1. запрос клиента https://exmaple.com/page-1 что разрешается в 1.2.3.4 = балансировщик нагрузки.
  2. Балансировщик нагрузки имеет сертификаты SSL, поэтому он расшифровывает трафик и отправляет http-трафик экземпляру. так это выглядит как http://172.1.0.1/page-1
  3. NGINX выполняет следующие задачи:
    1. слушать порт 80.
    2. передать трафик обработчику (PHP или аналог)

Надеюсь, это проясняет ситуацию.