Laravel的子目录 – Nginx和fastcgiconfiguration

我试图在我的nginx服务器hhvm上设置各种设备的应用程序,但经过大量的研究和许多尝试都无法成功。

有人可以帮我吗? 这是我目前的设置:

server { listen 80; server_name 178.13.1.230; root /home/callcenter/public_html/gateway; location / { index index.html index.php; } location /crm { root /home/callcenter/public_html/gateway/crm/public; #rewrite ^/crm/(.*)$ /$1 break; index index.php index.html; try_files $uri $uri/ /index.php$is_args$args /index.php?$query_string; } location ~ /crm/.+\.php$ { root /home/callcenter/public_html/gateway/crm/public; #rewrite ^/crm/(.*)$ /$1 break; include /etc/nginx/fastcgi.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include /etc/nginx/hhvm; #fastcgi_pass unix:/var/run/hhvm/hhvm.sock; } } 

编辑

请原谅我的不重视,真的没有让问题解释清楚。

当我访问178.13.1.230/crm时,服务器正在反应,好像我试图做一个“直接下载”文件

我需要的是,我可以在同一台服务器上设置多个laravel应用程序,在urls中访问它们,如:

http://178.13.1.230/app1

http://178.13.1.230/app2

fastcgi在线评论,正在被hhvm.conf所取代。

感谢您的帮助!

以下是包含的文件的副本:

/etc/nginx/hhvm.conf

 location ~ \.(hh|php)$ { fastcgi_keep_conn on; 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 ~ /crm/.+\.(hh|php)$ { fastcgi_keep_conn on; fastcgi_pass unix:/var/run/hhvm/hhvm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 

/etc/nginx/fastcgi.conf

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; 

在你的问题中没有太多的信息(关于什么不是“工作”,你会期望什么也不会发生?还有两个文件包含在内,你不会显示他们的内容)。

无论如何,我不希望这个configuration工作(至less不是PHP文件),因为你没有传递任何东西给php-fpm(或hhvm),匹配的行被注释掉了。

现在我不希望这个configuration工作,因为你显示/etc/nginx/hhvm.conf,但包括/ etc / nginx / hhvm(这是一个错字?)。

另外,您使用/etc/nginx/fastcgi.conf,但是/etc/nginx/hhvm.conf包含一个fastcgi_params文件。 这看起来很复杂,但也许是故意的? 你有一个fastcgi_params文件,定义正确的参数?

最后,我会将hhvm.conf包含在服务器块中,而不是在一个位置块中。

所以我会试试这个:

 server { listen 80; server_name 178.13.1.230; root /home/callcenter/public_html/gateway; location / { index index.html index.php; } location /crm { root /home/callcenter/public_html/gateway/crm/public; index index.php index.html; try_files $uri $uri/ /index.php$is_args$args /index.php?$query_string; } include /etc/nginx/hhvm.conf; } } 

但是,如果你没有fastcgi_params文件,它将无法正常工作。 (我可能只使用一个fastcgi_params文件:在fastcgi_params中重命名fastcgi.conf,反之亦然)。

我想你确定hhvm正在运行,监听你定义的套接字,运行良好。