[+] Apache2, vhost i dynamiczne subdomeny

Konfiguracja serwerów, usług, itp.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

[+] Apache2, vhost i dynamiczne subdomeny

Post autor: LordRuthwen »

Witam.
Zainstalowałem MUWordpress tworzący blogi jako prefixy domeny na jakiej siedzi i wszystko niby działa, ale prefixy przekierowane są na domenę domyślną dla tej maszyny, czyli:
  1. Otwierając:

    Kod: Zaznacz cały

    jakaśdomena.pl
    otwiera się to co powinno czyli strona główna Wordpressa.
  2. Zakładając blog:

    Kod: Zaznacz cały

     xyz.jakasdomena.pl
    rejestruję użytkownika, wysyła maila itd., ale użytkownik się już nie aktywuje bo odnośnik z maila zawiera:

    Kod: Zaznacz cały

    xyz.jakasdomena.pl/...
    i nie zostaje znaleziony gdyż xyz.jakasdomena.pl szuka plików całkiem gdzie indziej (plik /etc/apache2/sites-available/default).
    W jaki sposób skonfigurować vhosta aby ,,łapał'' wszystkie odwołania do tej domeny niezależnie od tego co jest prefixem?

    Kod: Zaznacz cały

    <VirtualHost *:80>
        ServerName jakasdomena.pl
        ServerAdmin webmaster@localhost
        ServerAlias www.jakasdomena.pl
        
        DocumentRoot /home/jakasdomena/www/
        DirectoryIndex index.html index.htm index.php
        AccessFileName .htaccess
        <Files ~ "^\.ht">
            Order allow,deny
            Deny from all
        </Files>
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /home/jakasdomena/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
        ErrorLog /home/jakasdomena/log/error.log
        LogLevel warn
        CustomLog /home/jakasdomena/log/access.log combined
        ServerSignature On
    </VirtualHost>
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Widzę dwie możliwości. Możesz pokombinować z mod_rewrite - sprawdzać główną domenę i odpowiednio przekierowywać żądanie. Możesz też zainteresować się mod_vhost_alias - tym też powinno się udać zrobić to, czego potrzebujesz.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Tak sobie myślę, jakbym usunął domyślne ustawienia z konfiguracji apache i ustawił przekierowanie dla błędu 404.
Miałoby to chyba szansę powodzenia, bo jak na razie wszystko czego nie znajdzie w ustawieniach trafia na ustawienia z /etc/apache2/sites-available/default.
Dobrze myślę?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

LordRuthwen pisze:jakbym usunął domyślne ustawienia z konfiguracji apache
Tzn?
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Chodzi mi o wyłączenie pliku /etc/apache2/sites-available/default z konfiguracji apache - vhosty są trzymane w osobnych plikach, które są odpowiedzialne tylko za nie.
W pliku ,,default'' jest w tym momencie to:

Kod: Zaznacz cały

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    
    DocumentRoot /home/apache/www/
    # use .htaccess files for overriding,
        AccessFileName .htaccess
        # and never show them
        <Files ~ "^\.ht">
            Order allow,deny
            Deny from all
        </Files>
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/apache/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
I do tego właśnie odnosi się apache w momencie gdy czegoś nie może znaleźć.
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

Jeśli usuniesz plik default (domyślnie link 000-default w sites-enabled), to na jego miejsce wskoczy kolejny plik (kolejność alfabetyczna według nazw plików) i będziesz miał właściwie to samo, tylko z innym VHostem. Nie wiem czy jasno to wytłumaczyłem. W każdym bądź razie defaultowego VHosta zawsze będziesz miał, a czy będzie w pliku default czy bryndza.conf to sprawa wtórna. Z resztą sprawdz:

Kod: Zaznacz cały

apache2ctl -S
Dostaniesz spis wszystkich VHostów i zawsze jeden będzie oznaczony jako domyślny.
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

Oj, czyli jednak źle myślałem, a już się cieszyłem... ;)
Jeszcze jakieś sugestie?
Awatar użytkownika
lessmian2
Member
Posty: 1088
Rejestracja: 30 kwietnia 2008, 19:38
Lokalizacja: Kraków

Post autor: lessmian2 »

A może tak po prostu:

Kod: Zaznacz cały

ServerAlias *.jakasdomena.pl
Edit:
Lub zamień miejscami pliki default i ten z konfiguracją VHosta jakasdomena.pl (pokombinuj z cyferkami).
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2341
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

lessmian2 pisze:A może tak po prostu:

Kod: Zaznacz cały

ServerAlias *.jakasdomena.pl
Edit:
Lub zamień miejscami pliki default i ten z konfiguracją VHosta jakasdomena.pl (pokombinuj z cyferkami).
O matko, a takie proste to było.
To rozwiązanie z gwiazdką działa tak jak chciałem :)
Próbowałem to wcześniej wepchnąć tu:

Kod: Zaznacz cały

<VirtualHost *:80>
ale efekt był odwrotny od zamierzonego.
Dziękuję serdecznie :)
ODPOWIEDZ