我试图在同一个站点上testingHHVM和php-fpm,同时运行这两个。 但是我希望php-fpm只能在一个目录下工作,但是我觉得我没有把它做好
location ~ \.(hh|php)$ { fastcgi_pass 127.0.0.1:9000; # or if you used a unix socket # fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location /checkout { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
进入/结帐时,我找不到一个文件
Nginx错误:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
这实际上有可能实现?
嗨,我有完全一样的问题。 解决了,耶!
试试这个:
location / { try_files $uri $uri/ /index.php?$args; } location ~ \.(hh|php)$ { fastcgi_keep_conn on; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; # /checkout/ or /checkout - just try it out if ($request_uri = '/checkout') { # using php-fpm fastcgi_pass unix:/var/run/php5-fpm.sock; } # using hhvm fastcgi_pass unix:/var/run/hhvm/hhvm.sock; }
重要提示:请注意$ request_uri
我认为你的问题是,你也有你的configuration:
location / { try_files some_url /index.php?$args; }
我想(嗯,我是新的nginx)nginx做以下几点:
/checkout location /checkout – 块 /checkout
try_files与/index.php?$args重写 其他想法:
为了更好的可靠性,我使用了hhvm-route fastcgi_pass php; 并在http块中:
upstream php { server unix:/var/run/hhvm/hhvm.sock; # hhvm server unix:/var/run/php5-fpm.sock backup; # php-fpm }
有了这个configuration,我有一个后备,如果hhvm崩溃。
还应该有一个更好的方式来切换基于$ request_uri …