2015-04-05 3 views
1

Я использую Ubuntu 14.04 + nginx + HHVM в гнезде Unix.
У меня есть несколько проектов, все работают под одним и тем же IP-адресом в разных подкаталогах. Я пытаюсь сделать конфигурацию модульной, так как проекты меняются, нужны только небольшие изменения. Однако ни один сайт не работает. То, что я получаю, - это простая страница «404 файлов не найдена» без разметки HTML. Ничего не появилось из журнала ошибок nginx и HHVM.модульная конфигурация nginx не работает

Вот моя структура каталогов:

nginx/ 
    main/ 
    index.php 
    phpmyadmin/ 
    index.php 
    laravel/ 
    public/ 
     index.php 

И моя конфигурация Nginx:

глобальный

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    server_name localhost; 

    access_log /var/log/nginx/access.log; 
    error_log  /var/log/nginx/error.log info; 
    charset utf-8; 

    root /usr/share/nginx; 

    include /etc/nginx/sites-available/main.conf; 
    #include /etc/nginx/sites-available/phpmyadmin.conf; 
    #include /etc/nginx/sites-available/laravel.conf; 

    include hhvm.conf; 

    # Deny .htaccess file access 
    location ~ /\.ht { 
     deny all; 
    } 
} 

main.conf

location/{ 
    root /usr/share/nginx/main; 
    index index.php; 
    try_files $uri $uri/ =400; 
} 

hhvm.conf

location ~ \.(hh|php)$ { 
    fastcgi_keep_conn on; 
    # fastcgi_pass 127.0.0.1:9000; 
    fastcgi_pass unix:/var/run/hhvm/hhvm.sock; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include  fastcgi_params; 
} 
+0

'404 Файл не найден' является сообщением об ошибке HHVM. Я думаю, вы перепутались с путями. Вместо 'fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;' вы можете попробовать 'fastcgi_param SCRIPT_FILENAME/usr/share/nginx/main $ fastcgi_script_name;' проверить его. – PKeidel

+0

Извините, но это не сработает. Ошибок не возникает. Кстати, hardcoding этот путь в конфигурацию кажется не очень хорошим. –

+0

Конечно, это нехорошо, нужно было проверить, является ли $ document_root ложным – PKeidel

ответ

0

Возможно, самый простой способ - создать призрак для каждого проекта. Таким образом, у вас есть один домен (без папки в URL-адресе) и он также модульный.

Но если вы хотите, чтобы остаться с вашей структурой, это может быть, возможно, с этой конфигурацией:

# For example for your main: 
location /main { 
    root /usr/share/nginx/main; 
    include hhvm.conf; 
    index index.php; 
    try_files $uri $uri/ =400; 
} 

Этих блоки необходимы для/магистрали,/PHPMyAdmin и/Laravel.

НО, проблема с этим решением может заключаться в том, что laravel, например, проще всего использовать в домене, таком как laravel.local, а не в такой папке, как pc.local/laravel из-за необходимости переписывания URL-адресов. Это была бы другая причина переключиться на vhosts с собственным доменом для каждой из ваших папок. Субдомены также возможны.

+0

Я знал, что получаю домен делает все проще, за исключением того, что я не хочу домена (пока). Я тоже не хочу связываться с файлом хостов. Вы правы, Laravel будет больно переписывать. –

0

Вот мои обновленные файлы конфигурации, так что работает (Laravel все еще в стадии разработки только с домашней страницы работы, это боль):

ответ PKeidel будет принято, так как он вдохновил меня сделать это. Благодаря!

Основной

server { 
    listen 80 default_server; 
    listen [::]:80 default_server; 

    server_name localhost; 

    access_log /var/log/nginx/access.log; 
    error_log  /var/log/nginx/error.log debug; 
    charset utf-8; 

    include sites-available/main.conf; 
    include sites-available/phpmyadmin.conf; 
    include sites-available/laravel.conf; 

    # Deny .htaccess file access 
    location ~ /\.ht { 
     deny all; 
    } 
} 

main.conf

location ^~/{ 
    root /usr/share/nginx/yoyo; 
    include php-template; 
    try_files $uri $uri/ =404; 
} 

phpmyadmin.conf

location ^~ /pma { 
    root /usr/share/nginx; 
    include php-template; 
    try_files $uri $uri/ index.php?$query_string; 
} 

PHP-шаблон

index index.php; 
include hhvm.conf; 
Смежные вопросы