2013-04-13 2 views
4

Я пишу веб-сервер в Go, который заменит существующий веб-сайт. Мне все еще нужны старые скрипты PHP. Прямо сейчас у меня есть lighttpd + fastcgi. Поэтому я хочу, чтобы мой веб-сервер вызывал PHP как FastCGI.PHP в Go. FastCGI?

Что лучше всего с этим справиться? Я думаю, мне нужен какой-то Go FastCGI API

http://golang.org/pkg/net/http/fcgi/ - Кажется, он поддерживает только серверную сторону, а не клиент.

+2

Я нашел и вопрос, и текущий ответ интересным и информативным, и я думаю, что ответ поддерживается «конкретным опытом». Я не вижу возможности для «дебатов, споров, опросов или расширенного обсуждения». –

ответ

3

Я думаю, вам нужно будет сделать свой собственный, если вы хотите напрямую подключиться к процессу fastcgi. Имейте в виду, что вам все равно придется запускать диспетчер процессов/spawner в любом случае, поэтому не было бы огромного прыжка просто запускать nginx, а также иметь прокси-сервер Go для скриптов PHP.

Вы также можете обоснованно повернуть его и подключить конечных пользователей к nginx на порту 80 и запросить прокси-сервер nginx для вашего Go-процесса или fastcgi по мере необходимости. Одно из преимуществ этого заключается в том, что тогда легко может быть запущен процесс Go как другой пользователь, чем root.

+0

Я не запускаю как root. Вместо этого я использую iptables. Я использую длительный опрос и ожидаю, что система поддержит 1000 или 10000 или более одновременных подключений. Если я поставлю nginx спереди, у меня будет в два раза больше соединений. Думаю, это было бы дорого. Если процесс Go будет подключать nginx (lighttpd в моем случае), тогда мне придется модифицировать скрипты PHP. В противном случае они обнаруживают внешние IP-адреса как 127.0.0.1. – Max

+1

Попросите процесс перехода к nginx для запуска PHP. Процесс Go может добавить заголовок X-Forwarded-For, и nginx может использовать его для установки IP-адреса. Вы также можете реализовать «клиент» fcgi; это не слишком сложно, но это будет больше работы, которая будет завершена и не будет бесплатной. –

Смежные вопросы