我试图让服务器的工作方式nginx-> apache2.4-> php-fpm(通过mod_proxy_fcgid)(为服务静态文件的nginx)(我不知道现在甚至需要Apache)。 它的工作,但我没有几个问题。
当我用apache2.2作为apache模块(在旧服务器上)时,我可以为每个虚拟主机设置php_admin_value,例如php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]" 。 现在,当我使用php-fpm时,apache不理解这些,并且不会启动。 如何在使用php-fpm时为每个虚拟主机设置这些值?
第二个问题是,我如何使_SERVER [“REMOTE_ADDR”]填充真正的远程地址? 用nginx + apache + php作为apache模块,用mod rpaf解决,但是现在_SERVER [“REMOTE_ADDR”]显示127.0.0.1。
最后一个问题。 如果我决定只去nginx + php-fpm什么“基本”的function,我会丢弃阿帕奇丢失?
更新1。
显然mod_rpaf没有做它应该做的事情。 Apache实际上为2.4提供了类似function的官方mod。 如果有人也需要它,这里是你如何得到它:
1. wget https://svn.apache.org/repos/asf/httpd/httpd/trunk/modules/metadata/mod_remoteip.c
2. apxs -cia mod_remoteip.c
3.启用mod LoadModule remoteip_module usr / lib / apache2 / modules / mod_remoteip.so
4.configurationmod
<IfModule remoteip_module> RemoteIPHeader X-Real-IP RemoteIPInternalProxy 127.0.0.1 </IfModule>
注意:第4步取决于你的nginx设置。 我认为它也可以用于X-Forwarded-To。 借此,解决了问题#2。
更新2。
这些选项可以在池的configuration文件中设置为php_admin_value[open_basedir] 。 这需要每个虚拟主机,这是不是很好,但由于我只有4个虚拟主机,它不会太乱,单独的池。
所以,问题1被解决了。
这可以设置为:
fastcgi_param PHP_VALUE 'sendmail_path "/usr/sbin/sendmail -t -i -f [email protected]"';
如果您有多个要传递的值,则它们必须全部位于由\n分隔的相同的PHP_VALUE 。
fastcgi_param PHP_VALUE 'allow_url_fopen 0\nmemory_limit 64M'
通过向nginx添加以下内容,将远程IP添加到HTTP头(X-Forwarded-For)中:
proxy_set_header X-Forwarded-For $ remote_addr;
使用mod_extract_forwarded apache模块来提取这些IP