LINUX.ORG.RU
решено ФорумAdmin

Apache + Nginx + Виртуальные хосты

 ,


0

0

Доброго времени суток! Решил установить на старенький компьютер локальный веб сервер в связке Nginx + Apache + MariaDB(или все таки PerconaDB в плане быстродействия и требований к системе?), ничего сложного вроде бы нету, но с виртуальными хостами возникла проблемка...
В браузере по адресу test.com открываються файлы из /srv/http, а не из ~/.VirtualHosts/test.com/public_html

httpd.conf (только основное)

ServerRoot "etc/httpd"

Listen 81

#LoadModule vhost_alias_module modules/mod_vhost_alias.so (закомментировано)

# Virtual Hosts
Include conf/extra/httpd-vhosts.conf

# Virual Domains
Include conf/vhosts/test.com

/etc/httpd/conf/vhosts/test.com

<VirtualHost 127.0.0.10:81>
    ServerAdmin support@test.com
    DocumentRoot "/home/flappy/.VirtualHosts/test.com/public_html"
    ServerName test.com
    ServerAlias test.com
    ErrorLog "/home/flappy/.VirtualHosts/test.com/errors/error_log"
    CustomLog "/home/flappy/.VirtualHosts/test.com/errors/access_log" combined

    <Directory "/home/flappy/.VirtualHosts/test.com">
        Require all granted
    </Directory>
</VirtualHost>

/etc/hosts

# Custom Params
  # Virtual Hosts
    127.0.0.10 test.com flappybook

/etc/nginx/nginx.conf (только основное)

    server {
        listen       80;
        server_name  localhost;
        root /srv/http/;
        index index.php index.html;
.................................................
        location / {
            proxy_pass http://localhost:81;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

Права

$ ls -la /home/flappy/ | grep .Vi
drwxrwxrwx  3 flappy flappy  4096 Sep 18 09:46 .VirtualHosts

Сообственно сабж, укажите на ошибки а то запутался. На ArchWiki ничего нового прочитать не удалось.

Полный httpd.conf
Полный nginx.conf

Проблему решил, оказалось все просто, в спешке забыл добавить пользователя в группу) (*facepalm*)

Но всеравно остался вопрос, как реализовать виртуальные хосты на nginx? Если в apache нужно добавить Include conf/vhosts/test2.com, то в nginx добавлять целый блок server в nginx.conf наверняка неправильно.
Подскажите заблудшему, а то я уже явно не туда начинаю копать...

flappyright
() автор топика
Ответ на: комментарий от flappyright

/etc/ngnix/sites-enabled/ /etc/ngnix/sites-available/

туда по конфигу на сайт

anonymous
()
Ответ на: комментарий от flappyright

Но всеравно остался вопрос, как реализовать виртуальные хосты на nginx? Если в apache нужно добавить Include conf/vhosts/test2.com

Не поверишь, точно так же.

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

xtraeft ★★☆☆
()
Ответ на: комментарий от xtraeft

include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;

Нету таких каталогов.
Пробовал include /etc/nginx/vhosts/test.com, сыпались ошибки при рестарте nginx.

Да я уж вроде как разобрался, если указывать два блока server в nginx.conf, то все работает. Вопрос только в том насколько это корректно

flappyright
() автор топика
Ответ на: комментарий от flappyright

Ну другие каталоги придумай или эти создай.

сыпались ошибки при рестарте nginx.

Очень информативно!

xtraeft ★★☆☆
()
Последнее исправление: xtraeft (всего исправлений: 2)
Ответ на: комментарий от flappyright

conf.d, кстати включать необязательно. Там тестовая страница, которая висит на http и еще и светится на ip-aдрес.
Если тебе хочется сохранить свой вариант каталогов, то можешь включить например /etc/nginx/vhosts/*;.
Но лучше все-таки придерживаться распространенного подхода и создать файлы каталоги sites-available sites-enabled, где в available у тебя будут отдельные файлы для каждого домена/cубдомена а в sites-enabled симлинки.
Отдельные хосты все-таки лучше использовать, хотя бы потому-что у тебе на каком-нибудь одном домене вполне может быть и несколько server блоков. Ну и когда у тебя станет хотя-бы больше 10 хостов, ты просто потеряешься, если все будешь хранить в одной файла. Поэтому, лучше каждый домен/cубдомен в отдельном файле, с его названием например.
Потом, если тебе нужно будет отключить какой-нибудь отдельный домен, то ты просто уберешь симлинк с sites-enabled (при этом в available останется сам файл, это при использование распространенных каталогов), и сделаешь reload, а если у тебя все в одном файле, то ты можешь только закомментировать, и сделать reload, что конечно дольше, плюс шанс пропустить } тогда будет больше.
В nginx.conf лучше хранить ключевые настройки и какие-то общие вещи для всех доменов.

anonymous_sama ★★★★★
()
Последнее исправление: anonymous_sama (всего исправлений: 1)
Ответ на: комментарий от anonymous_sama

нету - так создай.

Ну другие каталоги придумай или эти создай.

включить например /etc/nginx/vhosts/*;

Но лучше все-таки придерживаться распространенного подхода и создать файлы каталоги sites-available sites-enabled,

Возможно я что-то не правильно делаю, но не получаеться. При рестарте nginx ошибка.

Очень информативно!

Прошу прощения.

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2016-09-19 08:16:47 EEST; 9s ago
  Process: 8355 ExecStop=/usr/bin/nginx -g pid /run/nginx.pid; -s quit (code=exited, status=1/FAILURE)
  Process: 5366 ExecStart=/usr/bin/nginx -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 8400 ExecStartPre=/usr/bin/nginx -t -q -g pid /run/nginx.pid; daemon on; master_process on; (code=exited, status=1/FAILURE)
 Main PID: 5368 (code=exited, status=0/SUCCESS)

Sep 19 08:16:47 flappybook systemd[1]: Starting A high performance web server and a reverse proxy server...
Sep 19 08:16:47 flappybook nginx[8400]: nginx: [emerg] unexpected "}" in /etc/nginx/nginx.conf:33
Sep 19 08:16:47 flappybook nginx[8400]: nginx: configuration file /etc/nginx/nginx.conf test failed
Sep 19 08:16:47 flappybook systemd[1]: nginx.service: Control process exited, code=exited status=1
Sep 19 08:16:47 flappybook systemd[1]: Failed to start A high performance web server and a reverse proxy server.
Sep 19 08:16:47 flappybook systemd[1]: nginx.service: Unit entered failed state.
Sep 19 08:16:47 flappybook systemd[1]: nginx.service: Failed with result 'exit-code'.

Возможно в этом ошибка? А то я не уверен что правильно подключил стороний файл.

http {
    include       mime.types;
    default_type  application/octet-stream;
    keepalive_timeout  65;

    ## Compression
        gzip              on;
        gzip_buffers      16 8k;
        gzip_comp_level   9;
        gzip_http_version 1.1;
        gzip_min_length   10;
        gzip_types        text/plain text/css application/x-javascript text/xml;
        gzip_vary         on;
        gzip_static       on;
        gzip_proxied      any;
        gzip_disable      "MSIE [1-6]\.";

        include /etc/nginx/vhosts/localhost
}

Ну и сам localhost

################################
# LocalHost
################################

    server {
        listen       80;
        server_name  localhost;
        root /srv/http;
        index index.php index.html;
            client_max_body_size 100m;
            client_body_buffer_size 128k;
            proxy_connect_timeout 90;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
            proxy_buffer_size 32k;
            proxy_buffers 32 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;

        charset utf-8;

        location /pma/\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|docx|xlsx)$ {
            root /usr/share/phpmyadmin/;
            index index.html index.php;
            access_log off;
            expires 30d;
        }

        add_header Expires "Tue, 08 Sep 1973 07:00:00 GMT";
        add_header Cache-Control "must-revalidate, post-check=0, pre-check=0";

        location / {
            proxy_pass http://localhost:81;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
        }
    }

Отдельные хосты все-таки лучше использовать, хотя бы потому-что у тебе на каком-нибудь одном домене вполне может быть и несколько server блоков.

Вот тут вылез вопрос о коррекности)

flappyright
() автор топика
Ответ на: комментарий от anonymous_sama

Точку с запятой ставишь.

Блин, вот как раз ; забыл!
Все работает. Спасибо большое за помощь всем отписавшимся!
Проблема решена)

flappyright
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.