Страница 1 из 2

Как создать собственный виртуальный хост nginx 1.7?

Добавлено: 18 июн 2014, 18:02
nepster09
Использую опенсервер и столкнулся с таким вопросом, как можно создать свой виртуальный хост ?

Я бы хотел, что бы все мои конфигурационные файлы лежали в директории F:\OpenServer\nginx.conf\

В файле Nginx-1.7_server.conf я дописал строку:
include "%sprogdir%/nginx.conf/*.conf";
Теперь я наткнулся на 2 проблемы:

1) OpenServer на лету создает файл F:\OpenServer\userdata\temp\config\nginx.conf, который перебивает все мои конфигурации. Можно ли как-то отключить создание этого файла, для того чтобы прописывать все конфиги в ручную ?

2) Я попробовал пойти обманным путем и создал конфигурацию в F:\OpenServer\nginx.conf\ с www:
server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80;

    server_name www.site.ru;
    root        F:\OpenServer\domains\site.ru\frontend\web;
    index       index.php;

    access_log  F:\OpenServer\domains\site.ru/access.log main;
    error_log   F:\OpenServer\domains\site.ru/error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # раскомментируйте строки ниже во избежание обработки Yii обращений к несуществующим статическим файлам
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

location ~ \.php$ {
    root           "%hostdir%";
    try_files      $uri =404;
    # if (!-e $document_root$document_uri){return 404;}    
    fastcgi_pass   backend;
    fastcgi_index  index.php;
    fastcgi_param  TMP    "%sprogdir%/userdata/temp";
    fastcgi_param  TMPDIR "%sprogdir%/userdata/temp";
    fastcgi_param  TEMP   "%sprogdir%/userdata/temp";
    fastcgi_buffers 4 64k;
	fastcgi_connect_timeout 1s;
	fastcgi_ignore_client_abort off;
    fastcgi_next_upstream timeout;
    fastcgi_read_timeout 30s;
	fastcgi_send_timeout 30s;  
    fastcgi_param CONTENT_TYPE       $content_type;
    fastcgi_param CONTENT_LENGTH     $content_length;
    fastcgi_param DOCUMENT_URI       $document_uri;
    fastcgi_param DOCUMENT_ROOT      $document_root;
    fastcgi_param GATEWAY_INTERFACE  CGI/1.1;
	fastcgi_param HTTPS              $https;	
    fastcgi_param QUERY_STRING       $query_string;
    fastcgi_param REQUEST_METHOD     $request_method;
    fastcgi_param REQUEST_URI        $request_uri;    
    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        $host;
    fastcgi_param SERVER_PROTOCOL    $server_protocol;
    fastcgi_param SERVER_SOFTWARE    nginx;
    fastcgi_param SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME        $fastcgi_script_name;
}

    location ~ /\.(ht|svn|git) {
        deny all;
    }
}
но при запуске получил пустую страницу. Подскажите пожалуйста в чем проблема ?

Добавлено: 18 июн 2014, 18:51
Максим
Вы можете схитрить и сделать какую угодно конфигурацию, но кусок конфига, который направляет запросы на подпапку /openserver/ при доступе через IP нужно оставить, иначе Open Server не запустить. Сделать с этим ничего нельзя, совсем нельзя.

Добавлено: 18 июн 2014, 19:00
nepster09
хорошо, а подскажите пожалуйста почему я получаю белый лист когда пытаюсь запросить www.site.ru ? Логи пустые.

Добавлено: 18 июн 2014, 19:06
Максим
nepster09 писал(а):хорошо, а подскажите пожалуйста почему я получаю белый лист когда пытаюсь запросить www.site.ru ? Логи пустые.
Какой конфиг - такой и результат. У вас PHP возможно обращается на несуществующий бэкенд, если он у вас попросту не описан в конфиге (если как вы и сказали, заменили весь оригинальный конфиг своим).

fastcgi_pass backend;

[upd=1403107939][/upd]
Забыл добавить, если вы указали внешний файл конфигурации (свой собственный) то у вас там вообще не может быть подстановок %...%. Вернее могут быть, но обработаны они никак конечно же не будут. Подстановки могут быть только в стандартном конфиге, либо в конфиге хоста, который создан по всем правилам и лежит в папке хоста.

Добавлено: 18 июн 2014, 19:14
nepster09
так этот конфиг же инклудится. Тоесть

уже прописан в F:\OpenServer\userdata\temp\config\nginx.conf
upstream  backend  {

server 127.0.0.1:9000 max_fails=0;
server 127.0.0.1:9001 max_fails=0;
server 127.0.0.1:9002 max_fails=0;
server 127.0.0.1:9003 max_fails=0;
server 127.0.0.1:9004 max_fails=0;
server 127.0.0.1:9005 max_fails=0;

}
И если я его по новой вобью в свой конфиг nginx просто не поднимается. Или я что-то не понял ?

Добавлено: 18 июн 2014, 19:42
Максим
Я написал выше, это если только вы полностью заменили начальный конфиг. Если нет, то всё ok. Пустая страница может быть в этом случае если к примеру домен не существует, вижу вы сделали www.site.ru в конфиге, а открываете например как site.ru? нет? Root директория и индексный файл реально существуют?

Добавлено: 18 июн 2014, 19:48
nepster09
я прописал в конфиге через www,так как тот файл перебивает мою конфигурацию. Так же в файле host дописал 127.0.0.1 www.site.ru

И запрос в браузере делаю на www.site.ru

Путь F:\OpenServer\domains\site.ru\frontend\web точно правильный, проверил через выполнить.

Добавлено: 18 июн 2014, 19:50
Максим
ok покажите логи Nginx (предварительно включите лог запросов в настройках Open Server и пару раз попытайтесь зайти на домен чтобы сохранились логи). Там будет видно куда идёт запрос и в какую корневую папку, и идёт ли он вообще.

Добавлено: 18 июн 2014, 20:23
nepster09
Галочка ведения логов есть, а логи пустые. Во всяком случае ошибки.
В Nginx-1.7_queries.log набегают логи запросов.
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:41 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:42 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:42 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:42 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:42 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"
www.portf2.ru: 127.0.0.1 [18/Jun/2014:19:54:42 +0300] "GET / HTTP/1.1" "-" 304 195 "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0" "-"


Добавлено: 18 июн 2014, 20:34
Максим
nepster09, так мы будем до утра гадать. У вас есть 5 минут времени на тимвьювер? Скиньте доступ в личку, там и разберемся почему пустая страница. Не вижу смысла тут жевачку тянуть. (https://www.teamviewer.com/ru/index.asPX)

[upd=1403117796][/upd]
Для тех кому интересно - оказалось путь к ROOT папке был прописал с обратным слешем, в результате путь \domain\test трактовался как
\domain
est

тоесть \t воспринимался как перевод строки. Посоветовал человеку использовать правильные слеши вида / и надеюсь теперь всё будет ok.