Рейтинг:0

Nginx php-fpm при проблеме с рабочим столом Docker

флаг it

У меня есть nginx и php-fpm, работающие в одном контейнере на рабочем столе Docker для Windows.Я айтишник, а не разработчик, поэтому, пожалуйста, объясните мне. Я безуспешно пытался заставить конфигурацию работать. Мне нужно разрешить нескольким поддоменам проходить через php-fpm, где приложение php будет определять, какую базу данных открывать по конкретному поддомену. так clientA.mydomain.com clientB.mydomain.com все должно просто пройти через php, и приложение будет знать, к какой БД подключаться.

Я искал и нашел решения для перенаправления субдоменов на отдельные сайты, но мне нужно разрешить все субдомены на один сайт и обрабатывать, как это делает localhost.

Это отлично работает с использованием localhost или 127.0.0.1, но когда я пытаюсь использовать URL-адрес DNS, сайт перестает входить в систему, и все вызовы ajax перестают работать. Похоже, что переменные сеанса перестают передаваться обратно. Страница входа отображается, и неверный пароль покажет эту ошибку, поэтому я знаю, что сайт взаимодействует с правильной БД, но в журнале не отображаются ошибки или ответы ajax.

сервер {
    слушать 80 default_server;
    имя сервера  _;  
    # Я пробовал имя_сервера *.mydomain.com и имя_сервера .mydomain.com, последнее дает те же результаты, что и эта текущая конфигурация.
    
    корень /usr/share/nginx/html;
    server_tokens отключены;

    индекс index.php index.html index.htm;

    кодировка utf-8;
    # Добавить логирование стандартного вывода
    error_log /dev/stdout информация;
    журнал_доступа /dev/stdout;

    место расположения / {
        try_files $uri $uri/ /index.php?$args;
    }

    расположение ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        включить fastcgi_params;
    }
}

Мне пришлось удалить многое, чтобы задать вопрос.

Используя localhost или 127.0.01 с той же конфигурацией, вход в систему работает, ajax отвечает, и сайт загружает главную страницу, как и ожидалось.

стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "POST /login.php HTTP/1.1" 302
стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET / HTTP/1.1" 200 
стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET /framework.js?version=
стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET /resources/all.css 
192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET/resources/js/pdfjs/pdf.js 
стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET /app.js?version=2021
стандартный вывод nginx | 192.168.80.1 - - [08/сен/2021:13:23:00 +0000] "GET /resources/images/login_loader_logo.gif
192.168.80.1 - - [08/сен/2021:13:23:01 +0000] "GET /ajax.php?_dc=163110738
192.168.80.1 - - [08/сен/2021:13:23:02 +0000] "POST /ajax.php HTTP/1.1" 200 
192.168.80.1 - - [08/сен/2021:13:23:02 +0000] "GET /ajax.php?_dc=1631107382410&

При использовании записи URL-адреса, которую я создал в своем файле хоста для проверки, кажется, что js и ajax не работают с использованием URL-адреса.

192.168.96.1 - - [08/сен/2021:13:29:45 +0000] "GET /login.php HTTP/1.1" 200
192.168.96.1 - - [08/сен/2021:13:29:45 +0000] "GET /showClientLogo.php HTTP/1.1" 200
192.168.96.1 - - [08/сен/2021:13:29:46 +0000] "GET/HTTP/1.1" 302
192.168.96.1 - - [08/сен/2021:13:29:46 +0000] "GET /login.php HTTP/1.1" 200
192.168.96.1 - - [08/сен/2021:13:29:47 +0000] "GET /showClientLogo.php HTTP/1.1" 200
192.168.96.1 - - [08/сен/2021:13:29:57 +0000] "POST /login.php HTTP/1.1" 302
192.168.96.1 - - [08/сен/2021:13:29:57 +0000] "GET/HTTP/1.1" 302
192.168.96.1 - - [08/сен/2021:13:29:57 +0000] "GET /login.php HTTP/1.1" 200
192.168.96.1 - - [08/сен/2021:13:29:58 +0000] "GET /showClientLogo.php HTTP/1.1" 200

Заранее спасибо.

Michael Hampton avatar
флаг cz
Почему вы считаете, что это проблема nginx? Похоже на проблему с приложением. Поговорите с его разработчиком.
WillyK avatar
флаг it
Отчасти потому, что приложение и конфигурация отлично работают под IIS и php-cgi. Я устанавливаю и настраиваю это приложение годами таким образом.Сейчас мы работаем над контейнеризацией приложения и используем linux, nginx и php-fpm. localhost работает нормально, и это только тогда, когда вы вводите реальный URL-адрес в микс. Все это может работать в AWS как есть, и это может быть проблема с рабочим столом докера, но я не уверен. Спасибо
Рейтинг:1
флаг it

@MichaelHampton был прав, я попробовал несколько вещей, заметил, что новые сеансы создаются во время перенаправления, из-за чего система продолжает приземляться на странице входа. В приложении есть внутренняя настройка, которая касается междоменных файлов cookie, и когда я отключил ее, сайт работает с использованием URL-адреса домена. Поскольку я тестирую, я использую только http, а не https.

Ответить или комментировать

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