Обновить: Извини, моя ошибка. Для 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/
Чтобы прояснить это:
https://exmaple.com/page-1
что разрешается в 1.2.3.4 = балансировщик нагрузки.http://172.1.0.1/page-1
Надеюсь, это проясняет ситуацию.