Имеем следующий код:
<?php
header("Status: 200 OK");
header("Location: http://google.com");
var_dump(http_response_code());
Тестовая среда для запуска (docker-compose только для примера, если вам удобнее можно и без него, но результат идентичный): https://github.com/Mapteg34/nginx200_when_apache302
mapt@mpc test % curl -v 127.0.0.1:6091/test.php
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 6091 (#0)
> GET /test.php HTTP/1.1
> Host: 127.0.0.1:6091
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Sat, 09 Jun 2018 12:18:03 GMT
< Server: Apache/2.4.25 (Debian)
< X-Powered-By: PHP/5.6.36
< Status: 200 OK
< Location: http://google.com
< Content-Length: 9
< Content-Type: text/html; charset=UTF-8
<
int(302)
* Connection #0 to host 127.0.0.1 left intact
mapt@mpc test % curl -v 127.0.0.1:6092/test.php
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 6092 (#0)
> GET /test.php HTTP/1.1
> Host: 127.0.0.1:6092
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.13.7
< Date: Sat, 09 Jun 2018 12:18:08 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/5.6.36
< Location: http://google.com
<
int(302)
* Connection #0 to host 127.0.0.1 left intact
В итоге получаем проблему (или все-таки что-то некорректно настроено?): apache возвращает 302 (и в целом это правильно), nginx возвращает 200 и location (и это не корректно).
Есть идеи как исправить это и заставить nginx (nginx.conf) возвращать на этом коде логичный 302, так же как апач (и это не проблема fpm, если посмотреть его логин он тоже отдает 302)?
Я понимая что пример наверное из разряда "сам проблему создал...". Но в реальности первую строчку (Status: 200 OK) выставляет CMS и я не могу это изменить. А дальше (Location: http://google.com) это уже мой код. Конечно я могу его поменять, например установив предварительно свой статус, или сделав header_remove(), но работать будет в данном месте, а есть другие модули, есть в конце концов части CMS, использующие ту же конструкцию. Все их поменять не получится (да и нельзя). Однако на Apache оно вполне работает и надо заставить его работать в рамках nginx.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь сделать запрос в БД на php, но опыт в языке стремится к нулюЗапрос не выполняется верно, хотя callback пишет, что все ок
Подскажите пожалуйста, как можно записать подобный цикл, без использования фигурных скобок?
Подскажите как сделать чтобы при отправке с формы постоянно прибавлялся идентификатор 'id' в бд у меня поле id INT а все остальные text
Маюсь парсингом, но в результате мне удалось получить массив только с нужными мне значениями (кириллица)Всё остальное - пустые значения