Я надеюсь, что вы можете дать мне представление о том, что происходит не так.
Сценарий: я запускаю gitweb (CGI) со скриптом в режиме fastcgi:
#!/bin/sh
export FCGI_SOCKET_PATH=127.0.0.1:7001
su git -c "/var/www/vh_[vhost]/htdocs/gitweb.cgi --fastcgi &"
Затем я используюnginx для обслуживания этого контента:
...
fastcgi_pass 127.0.0.1:7001;
...
Все работает как положено, но вот проблема:
$ wget "http://git.[host].de/?p=[repo].git;a=summary" -O /tmp/test.txt && file --mime-encoding /tmp/test.txt
> /tmp/test.txt: iso-8859-1
$ su git -c "./gitweb.cgi \"?p=[repo].git;a=summary\" > ./test" && file --mime-encoding ./test
> ./test: utf-8
Что, очевидно, означает, что вывод fast-cgi - это utf8, а контент, обслуживаемый nginx - этоiso-8859-1.
Заголовок ответа FireBugs:
Server nginx
Date Fri, 02 Sep 2011 14:14:08 GMT
Content-Type application/xhtml+xml; charset=utf-8
Transfer-Encoding chunked
Connection close
Похоже, что передача с использованием сокета приводит к проблеме кодирования.
Я много тестировал, но могуНе могу понять, как решить эту проблему.