Страницы

Поиск по вопросам

понедельник, 23 декабря 2019 г.

Как поменять Content-type в apache или nginx

#apache #nginx #wsgi #content_type


Доброе время суток.
Есть Trac, есть необходимость поменять страницу списка проектов с простого html на xml.
Этому xml будет назначен xsl шаблон, тут проблемы нет.
Шаблон написан, все замечательно генерится, но возникает проблема в том, что trac
рендерит ответ таким вот образом: req.send(output, 'text/html').
Каким образом можно поменять этот content-type на text/xml? Иначе браузер не применяет
xsl преобразование, нужен text/xml.
Перед апачем стоит nginx, который делает proxy_pass на апач.
Поменять content-type надо фактически только для одного пути, а именно /trac.
Кусок httpd.conf:
WSGIScriptAlias /trac d:/web/trac/apache/trac.wsgi


    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all


Кусок nginx.conf
server {
    location /trac {
        proxy_pass http://127.0.0.1:8090/trac;
    }
}

Куда копать?
ЗЫ в трак лезть совсем нет желания.
ЗЗЫ Зачем такой изврат? Ну вот так фишка легла, связки-связки-связки...    


Ответы

Ответ 1



Решил в nginx'е. server { location = /trac/ { proxy_pass http://127.0.0.1:8090/trac/; proxy_hide_header Content-Type; add_header Content-Type text/xml; } location /trac/ { proxy_pass http://127.0.0.1:8090/trac/; } } ЗЫ Полдня мучился.

Ответ 2



Чтобы переопределить тип содержимого, официальная документация Nginx рекомендует воспользоваться комбинацией директив types и default_type. location /trac/ { types { } default_type application/xml; } https://nginx.org/r/types/ru

Комментариев нет:

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