Настройка виртуальных хостов

Тема в разделе "Администрирование серверов", создана пользователем Sunday, 27 июн 2012.

Модераторы: mefish, stooper
  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Установлен Apache+Nginx. Имеется один основной домен и 40 поддоменов. Все поддомены имеют общую с основным директорию, т.к. движок общий. Только один поддомен имеет свою директорию, т.к. на нем висит PhpMyAdmin и для него создан отдельный файл виртуального хоста.

    Вопрос такой - можно ли прописать виртуальные хосты в одном файле или придется тупо делать 40 файлов?
    И как в таком случае нужно поступать с конфигом nginx-a?

    Спасибо.
     
  2. StrikeOFF

    StrikeOFF ♥kan inte lyfta utan lift♥

    Регистр.:
    20 мар 2010
    Сообщения:
    363
    Симпатии:
    204
    в /etc/httpd/conf/httpd.conf в конце посмотри пример. Туда дописываешь и ребутишь апач
     
    Sunday нравится это.
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Вы имеете ввиду блок <VirtualHost 127.0.0.1:8080> ? Так что нужно просто клонировать эти блоки внутри конфига? И там всего одна строка, которая будет отличаться - это ServerName. Может есть какая-то возможность указать
    Код:
    ServerName *.domen.ru
    или что-то типа такого?
    А что делать с конфигом nginx-a?
     
  4. StrikeOFF

    StrikeOFF ♥kan inte lyfta utan lift♥

    Регистр.:
    20 мар 2010
    Сообщения:
    363
    Симпатии:
    204
    Да, с правильными настройками путей и названий
     
    Sunday нравится это.
  5. Da1VeR

    Da1VeR Постоялец

    Регистр.:
    22 фев 2012
    Сообщения:
    128
    Симпатии:
    21
    Пример в апаче:
    Код:
    NameVirtualHost 127.0.0.1
     
    <VirtualHost 127.0.0.1>
      ServerName localnet
      ServerAdmin admin@localnet
    </VirtualHost>
     
    <VirtualHost 127.0.0.1>
      ServerName test1
      ServerAdmin admin@test1.my
      DocumentRoot /home/test1.ru/www/
    <Directory /home/test1.ru/www/>
      Options Includes
      AllowOverride all
    </Directory>
      ErrorLog logs/test1.ru.error.log
      CustomLog logs/test1.ru.log common
      ScriptAlias /cgi-bin/ "/home/test1.ru/cgi-bin/"
    <Directory /home/test1.ru/cgi-bin/>
      Options ExecCGI
      Order allow,deny
      Allow from all
    </Directory>
    </VirtualHost>
     
    <VirtualHost 127.0.0.1>
      ServerName test2
      ServerAdmin admin@test2.my
      DocumentRoot /home/test2.ru/www/
    <Directory /home/test2.ru/www/>
      Options Includes
      AllowOverride all
    </Directory>
      ErrorLog logs/test2.ru.error.log
      CustomLog logs/test2.ru.log common
      ScriptAlias /cgi-bin/ "/home/test2.ru/cgi-bin/"
    <Directory /home/test2.ru/cgi-bin/>
      Options ExecCGI
      Order allow,deny
      Allow from all
    </Directory>
    </VirtualHost>
    Пример в nginx:
    Код:
    server {
      server_name domain-1.com;
      access_log /var/log/nginx/domain-1.com.log;
     
      location / {
        root /var/www/domain-1.com;
        index index.htm index.html;
      }
    }
     
    server {
      server_name domain-2.com;
      access_log /var/log/nginx/domain-2.com.log;
      location / {
        root /var/www/domain-2.com;
        index index.htm index.html;
      }
    }
    Как писать показано, а дальше просто подставь настройки своих хостов...
     
    Sunday нравится это.
  6. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Каждому хосту писать индивидуальный блок <VirtualHost 127.0.0.1> даже,если они имеют общий DocumentRoot?
    А вот для nginx вычитал, что можно указывать server_name со звездочкой
    Код:
    server_name *.domain.com;
    
    тогда вообще получается можно не создавать под каждый хост блок "server"?
     
  7. Da1VeR

    Da1VeR Постоялец

    Регистр.:
    22 фев 2012
    Сообщения:
    128
    Симпатии:
    21
    По поводу nginx - если у них общий путь - то да, также как и писал выше, а для апача будет выглядеть так:
    Код:
    <VirtualHost *>
    ServerName server.domain.com
    ServerAlias server server2.domain.com server2
    # ...
    </VirtualHost>
    Через ServerAlias прописываешь все хосты которые относятся к данному пути...
     
    Sunday нравится это.
  8. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    Что-то у меня уже голова квадратная. Не понятно, но не работают поддомены - выдают forbidden. Я прописывал блок server и в самом конфиге nginx-a и создавал отдельный файл виртуального хоста в папке sites-available и делал симлинк в папке sites-enabled. Сначала делал со звездочкой перед основным доменом, потом пробовал делать правило для конкретного поддомена, но что-то я видать не так делаю. не фурычат поддомены и всё тут...
    Если вырубить nginx, то поддомен начинает работать.
     
  9. Da1VeR

    Da1VeR Постоялец

    Регистр.:
    22 фев 2012
    Сообщения:
    128
    Симпатии:
    21
    Выложи сюда конфиг nginx + логи..

    Каким макаром? запускаешь апач на одинаковом порту с nginx? или как ?
     
  10. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    765
    Симпатии:
    326
    конфиг

    Код:
    user www-data;
    worker_processes 4;
     
    pid /var/run/nginx.pid;
     
    events {
        worker_connections 2048;
        # multi_accept on;
    }
     
    http {
     
        ##
        # Basic Settings
        ##
     
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
     
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
     
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
     
        log_format main ‘$remote_addr – $remote_user [$time_local] $status ‘
        ‘»$request» $body_bytes_sent «$http_referer» ‘
        ‘»$http_user_agent» «http_x_forwarded_for»‘;
        access_log /var/log/nginx/access.log main;
     
        ##
        # Logging Settings
        ##
     
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
     
        ##
        # Gzip Settings
        ##
     
        gzip on;
        gzip_disable "msie6";
     
        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
     
        ##
        # Virtual Host Configs
        ##
     
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
     
        server {
            listen 62.76.187.80:80;
            server_name domen.ru *.domen.ru;
            server_name_in_redirect off;
            access_log /var/log/nginx/domen_ru.access.log main;
         
            location / {
                proxy_pass http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size 10m;
                proxy_connect_timeout 90;
            }
         
         
            location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js)$
            {
                root /srv/www/domen.ru/public_html;
            }
        }
    }
     
     
    #mail {
    #    # See sample authentication script at:
    #    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
    #
    #    # auth_http localhost/auth.php;
    #    # pop3_capabilities "TOP" "USER";
    #    # imap_capabilities "IMAP4rev1" "UIDPLUS";
    #
    #    server {
    #        listen    localhost:110;
    #        protocol  pop3;
    #        proxy      on;
    #    }
    #
    #    server {
    #        listen    localhost:143;
    #        protocol  imap;
    #        proxy      on;
    #    }
    #}
    

    Лог

    Код:
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 301 336 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"
    Мой IP - - [28/Jun/2012:17:44:52 +0400] "GET / HTTP/1.1" 403 456 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1" "-"


    Обращаюсь напрямую на порт апаче poddomen.domen.ru:8080