Jak vyřešit www a non www na apache2

Jak vyřešit www a non www na apache2
« kdy: 02. 06. 2018, 16:33:51 »
Trapim sa s tym uz asi 2 hodiny a nejak mi to nefunguje.
Situacia je nasledovna:
Na free dns servery som si zaregistroval min. 2 domeny
Kód: [Vybrat]
web1.ddns.com
web2.ddns.com
Na vlastnom VPS som si v debiane nainstaloval LAMP a vytvoril virtualhosty.
Weby fungovali na porte 80 ak som zadal do brovsera web1.ddns.com alebo web2.ddns.com vsetko funguje.
Na letsencrypt som si vygeneroval certifikaty a weby uz funguju na https 443.

Co by som chcel a neviem presne ako, resp. skusal som a nefungovalo to
Chcel by som to nastavit tak, ze ked zadam do url jednu z moznosti
Kód: [Vybrat]
web1.ddns.com
www.web1.ddns.com
https://web1.ddns.com
https://www.web1.ddns.com
aby som sa stale dostal na web a aby to vzdy v url prepisalo na
Kód: [Vybrat]
https://www.web1.ddns.comAko viem z okolia, tak vacsinou nikto do url nepise https a dokonca vela ludi nepise ani www, ale zadaju priamo web1.ddns.com.
Ako je vidiet z toho
Kód: [Vybrat]
web1.ddns.com
web2.ddns.com
toto su uz domeny druheho radu, ked ja tam chcem pychnut este www, tak to uz bude treti rad (neviem preco bolo vymyslene www :) )
Nejake riesenia co som nasiel su:
Kód: [Vybrat]
3
RewriteEngine On
RewriteCond %{HTTP_HOST} ^web1.ddns.com [NC]
RewriteRule ^(.*)$ http://www.web1.ddns.com/$1 [L,R=301]
Zaclenil som to do .htaccess, ale obavam sa, ze to nejako nefunguje
Samozrejme povolit v apache htaccess a rewrite a restart apache
Pridavam tu este konfigurak virtualhostu
Kód: [Vybrat]
<VirtualHost *:80>
   RewriteEngine on
   ReWriteCond %{SERVER_PORT} !^443$
   RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
   ServerName web1.ddns.com
   ServerAlias www.web1.ddns.com
</VirtualHost>
<VirtualHost *:443>
   ServerName web1.ddns.com
   ServerAlias www.web1.ddns.com
   SSLEngine on
   SSLCertificateFile /etc/letsencrypt/live/web1.ddns.com/cert.pem
 # /etc/apache2/ssl/cert1.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/web1.ddns.com/privkey.pem
 # /etc/apache2/ssl/privkey1.pem
   DocumentRoot /var/www/www.web1.ddns.com

  <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
    </IfModule>
</VirtualHost>
Vedel by mi niekto poradit ako to vyriesit vdaka
« Poslední změna: 03. 06. 2018, 18:55:53 od Petr Krčmář »


McFly

  • *****
  • 616
    • Zobrazit profil
    • E-mail
Re:Ako vyriesit www a non www na apache2
« Odpověď #1 kdy: 02. 06. 2018, 18:10:10 »
Umožňuje ten free dns poskytovatel zaregistrovat i variantu s www, např. www.web1.ddns.com? Pravidla v .htaccessu můžeš mít jaká chceš, ale pokud nebude host www.web1.ddns.com přeložitelný...

Re:Ako vyriesit www a non www na apache2
« Odpověď #2 kdy: 02. 06. 2018, 19:17:22 »
Všechny ty domény, tj. web1.ddns.com i www.web1.ddns.com (případně varianty s dvojkou) musíte mít v DNS nasměrované na ten váš server.

Ta pravidla pro přepis nedávejte do .htaccess ale přímo do konfigurace Apache (je to pro server snazší na zpracování).

Ve virtualhostu pro HTTP bych nedával podmínku, že se port nerovná 443, prostě bych přesměroval vše. A zároveň bych tam vše přesměrovával rovnou na správné cílové hostname – aby se přesměrovávalo rovnou http://web1.ddns.comhttps://www.web1.ddns.com a ne zbytečně nadvakrát http://web1.ddns.comhttps://web1.ddns.comhttps://www.web1.ddns.com. V konfiguraci virtualhsota pro HTTPS vám podle mne chybí přesměrování z web1.ddns.com na www.web1.ddns.com.

Re:Ako vyriesit www a non www na apache2
« Odpověď #3 kdy: 03. 06. 2018, 07:59:00 »
DNS mam zaregistrovane na changeip.com (neviem, ale zrejme je mozne k A zaznamu spravit aj variantu s www).
Ale ked tak uvazujem, tak co znamena www a naco to vlastne je? Bezny clovek do url www nepise (googlom to indexovat nepotrebujem, takze vlastne www variantu netreba).
Alebo vie mi niekto povedat k comu je dobre www ?

2 Filip Jirsák
Ako spravne upravit virtualhost ak sa rozhodnem zrusit "www".
Zrejme si budem musiet nastudovat aj co to ohladom konfiguracie apache, lebo vacsinou robim podla navodov co najdem na nete :)

Re:Ako vyriesit www a non www na apache2
« Odpověď #4 kdy: 03. 06. 2018, 08:33:10 »
Pokud chcete mít virtualhosty pro dva různé weby pro HTTP i HTTPS, budete mít pro každou ze čtyř variant jeden virtualhost, na virtualhostech pro HTTP nakonfigurujete přesměrování na HTTPS a na virtualhostech pro HTTPS nakonfigurujete klasický DocumentRoot. Podívejte se na  Name-based Virtual Host Support.


Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Ako vyriesit www a non www na apache2
« Odpověď #5 kdy: 03. 06. 2018, 08:57:53 »
2 virtualhosty, jeden na HTTP:

Kód: [Vybrat]
                ServerName domena.cz
                ServerAlias *.domena.cz

                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^(.+)\.domena\.cz$ [NC]
                RewriteRule ^(.*)$ http://domena.cz$1 [R=301,NE,L]
        RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Druhy na HTTPS:
Kód: [Vybrat]
                ServerName domena.cz
                ServerAlias *.domena.cz

                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^(.+)\.domena\.cz$ [NC]
                RewriteRule ^(.*)$ https://domena.cz$1 [R=301,NE,L]
« Poslední změna: 03. 06. 2018, 09:00:32 od Vilith »

Re:Ako vyriesit www a non www na apache2
« Odpověď #6 kdy: 03. 06. 2018, 09:31:52 »
2 virtualhosty, jeden na HTTP:

Kód: [Vybrat]
                ServerName domena.cz
                ServerAlias *.domena.cz

                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^(.+)\.domena\.cz$ [NC]
                RewriteRule ^(.*)$ http://domena.cz$1 [R=301,NE,L]
        RewriteCond %{HTTPS} off
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Druhy na HTTPS:
Kód: [Vybrat]
                ServerName domena.cz
                ServerAlias *.domena.cz

                RewriteEngine on
                RewriteCond %{HTTP_HOST} ^(.+)\.domena\.cz$ [NC]
                RewriteRule ^(.*)$ https://domena.cz$1 [R=301,NE,L]

Takhle určitě ne. Za prvé tam počítáte pouze s jednou doménou, darebacik chce dvě domény. Za druhé tam máte jenom přesměrování a nikde neřešíte samotné dokumenty. Za třetí úplně zbytečně variantu s prefixem a bez HTTPS přesměrováváte nadvakrát, o čemž jsem psal výše.

Vilith

  • *****
  • 662
    • Zobrazit profil
Re:Ako vyriesit www a non www na apache2
« Odpověď #7 kdy: 03. 06. 2018, 09:37:10 »
1/ pridat do Server alias snad neni neprekonatelny problem - nebo ano?
2/ popisuji pouze redirecty, dokumenty pocitam ze budou spolecne pro vsechny domeny a aliasy a umisti si je tam, kam bude potrebovat (priklanel bych se k virtualhostu do HTTPS ;) )

BTW - pro HTTPS musi mit patricne certifikaty, ale to je snad samozrejmost

Re:Ako vyriesit www a non www na apache2
« Odpověď #8 kdy: 03. 06. 2018, 10:05:47 »
1/ pridat do Server alias snad neni neprekonatelny problem - nebo ano?
Problém to není, akorát to bude k ničemu, když uživatel zadá do prohlížeče web1.ddns.com a přesměruje ho to na úplně jiný web https://web2.ddns.com.

dokumenty pocitam ze budou spolecne pro vsechny domeny
To by byla pěkná hloupost. Přínos toho mít jeden obsah pod dvěma doménami by nebyl žádný, za to by z toho vznikal zmatek a vyhledávače by to vyhodnotily jako duplicitní obsah a penalizovaly.

BTW - pro HTTPS musi mit patricne certifikaty, ale to je snad samozrejmost
To už má ale darebacik vyřešeno.

Když má být na jednom serveru hostováno několik webů, je nejjednodušší mít pro každý z nich dva virtualhosty, jeden pro HTTP a druhý pro HTTPS. Aspoň je hned na první pohled v konfiguraci vidět, kde je který web nakonfigurován. Pokud by si chtěl darebacik později konfiguraci zkrátit, může si nastudovat, jak se u přepisovacích pravidel používají proměnné a všechno přesměrování na HTTPS spojit do jednoho virtualhosta – protože pro weby chce použít jen kanonické názvy, bez přesměrování z prefixu www. Pokud by chtěl přesměrování i z webů s www (měl by to v DNS), pak by bylo rozumné mít na to druhý virtualhost.

Re:Ako vyriesit www a non www na apache2
« Odpověď #9 kdy: 03. 06. 2018, 10:22:21 »
OK zabudnime na to :)
Predstavme si, ze mam jeden virtualhost.
Klasicky v adresary
Kód: [Vybrat]
/var/www/web1.ddns.commam ulozeny obsah webu.

Na changeip.com mam zalozeny DNS na web1.ddns.com.
Chcel by som to nastavit tak, ze ked klient do url zada jednu z moznosti
Kód: [Vybrat]
web1.ddns.com
www.web1.ddns.com
https://web1.ddns.com
https://www.web1.ddns.com
tak aby ho to stale nasmerovlo do /var/www/web1.ddns.com (tam bude okrem ineho index.php, takze stale sa zobrazi rovnaky obsah).

Alebo to este zjednodusime
Staci ak zada klient
Kód: [Vybrat]
web1.ddns.com
tak aby ho to stale nasmerovlo do /var/www/web1.ddns.com (tam bude okrem ineho index.php, takze stale sa zobrazi rovnaky obsah).
Samozrejme web bude dostupny cez https (cize prijme kluce atd ...) a adresu v url predpokladam bude mat
Kód: [Vybrat]
https://web1.ddns.com
Ja som to trocha na zaciatku topicu skomplikoval, ze mam 2 virtualhosty (ja ich mam totiz viac) ale principialne sa to da vysvetlit aj na jednom.


BTW OT: ja som (isiel blbo podla navodov) a vypol som si 000-default.conf a potom ked som zadal do url nejaku DNS adresu (prip. IP adresu), tak ma to hodilo do ineho adresra a zobrazilo mi to uplne iny web co som chcel.
Takze 000-default.conf som o5 povolil a nasmeroval som ho do /var/www/index.php kde sa zobrazuje to co chcem (alebo je to tam ciste a nezobrazi sa nic).
Nevedel som, ze apache v /etc/pache2/sites-enable cita subory podla abecedy a ked nemam 000-default povoleny, tak to vezme prvy symlink (podla abecedy).
Cize nie na darmo ma defalt tie 000 na zaciatku :)

Re:Ako vyriesit www a non www na apache2
« Odpověď #10 kdy: 03. 06. 2018, 10:57:20 »
Musíte mít názvy web1.ddns.com a www.web1.ddns.com nastavené v DNS a nasměrované na váš server.

Kód: [Vybrat]
<VirtualHost *:80>
    ServerName web1.ddns.com
    ServerAlias www.web1.ddns.com

    RewriteEngine on
    RewriteRule ^(.*)$ https://web1.ddns.com$1 [R=301,NE,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName www.web1.ddns.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/web1.ddns.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/web1.ddns.com/privkey.pem

    RewriteEngine on
    RewriteRule ^(.*)$ https://web1.ddns.com$1 [R=301,NE,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName web1.ddns.com

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/web1.ddns.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/web1.ddns.com/privkey.pem

    DocumentRoot /var/www/web1.ddns.com
</VirtualHost>

Předpokládá to, že v souboru [tt]/etc/letsencrypt/live/web1.ddns.com/cert.pem[/tt] je certifikát vystavený na obě jména [tt]web1.ddns.com[/tt] i [tt]www.web1.ddns.com[/tt]. Můžete pak doplnit k oběma HTTPS virtualhostům posílání HSTS hlavičky, jak to máte ve vašem úvodním příkladu. A pokud chcete použít PHP, musíte ho samozřejmě mít správně nakonfigurované.

Re:Ako vyriesit www a non www na apache2
« Odpověď #11 kdy: 03. 06. 2018, 11:48:14 »
Ano kluce generujem pre obidva (aj s www aj bez www)
Kód: [Vybrat]
./letsencrypt-auto certonly --webroot -w /var/www/web1.ddns.com -d web1.ddns.com -d www.web1.ddns.comNo a to by ma tiez zaujmalo (ked uz k tomu doslo). V niektorych prehliadacoch mi web nezobrazi a vyhodi hlasku
Citace
Vaše pripojenie nie je súkromné
Útočníci sa môžu pokúsiť ukradnúť vaše informácie z webu www.web1.ddns.com (napríklad heslá, správy alebo kreditné karty). Ďalšie informácie
NET::ERR_CERT_COMMON_NAME_INVALID
 
Automaticky odosielať niektoré informácie o systéme a obsah stránok do Googlu s cieľom pomôcť rozpoznávať nebezpečné aplikácie a weby. Pravidlá ochrany súkromia
Web www.web1.ddns.com zvyčajne chráni vaše informácie pomocou šifrovania. Keď sa Chrome tentokrát pokúsil pripojiť k webu www.web1.ddns.com, odoslal späť nezvyčajné a nesprávne poverenia. Môže sa to stať vtedy, keď sa za web www.web1.ddns.com snaží vydávať útočník alebo keď pripojenie preruší prihlasovacia obrazovka siete Wi‑Fi. Vaše informácie sú stále zabezpečené, pretože Chrome zastavil pripojenie ešte pred výmenou dát.

Web www.web1.ddns.com momentálne nemôžete navštíviť, pretože používa certifikát HSTS. Chyby siete a útoky sú zvyčajne dočasné, takže by táto stránka mala neskôr pravdepodobne fungovať.

Re:Ako vyriesit www a non www na apache2
« Odpověď #12 kdy: 03. 06. 2018, 12:05:20 »
Řekl bych, že tam máte buď jiný certifikát, nebo byl ten certifikát špatně vytvořen. Ale když neznáme skutečné jméno toho webu, nemůžu se na ten certifikát podívat, abych zjistil, kde přesně je problém.

Re:Ako vyriesit www a non www na apache2
« Odpověď #13 kdy: 03. 06. 2018, 12:32:13 »
Ano ja som sa pri vytvarani certifikatu pomylil a dostal som hlasku, ze certifikat je uz vytvoreny pre iny web atd .... uz si to nepamatam. Takze skusim to este raz od znova na cisto

Re:Ako vyriesit www a non www na apache2
« Odpověď #14 kdy: 03. 06. 2018, 14:05:10 »
Cize ak tomu spravne rozumiem, tak koremove domeny su reprezentovane bodkou ".".
Tie spravuje korenvy DNS a ten ma pod spravou domeny prveho radu (com, org, net atd ....)
Napr. com domenu v ramci dns zony, spravuje nejaka organizacia, ktora ponuka inym organizaciam domeny druheho radu (nieco.com, niecoine.com atakdale.com).
Domeny druheho radu su za poplatok.
Domeny tretieho radu ponukaju organizacie, ktore vlastnia domeny druheho radu a maju uz svoju vlastnu DNS zonu (resp. mozu, ale nemusia ponukat).
Ak ich ponukaju, tak spravidla to uz je bez poplatku.
Niekedy davno som si myslel, ze www je cast domeny napr. (www.nieco).com, ze to v zatvorke je jedna cast, ale potom som sa docital, ze www je domenou nasledujuceho radu.

Ale ked do url napises napr. google.com tak vzdy ta to presmeruje na https://www.google.com.
Neviem aky webserver pouziva google, ale ak apache, tak v DNS musi mat A zaznam na google.com a zaroven aj na www.google.com a v apache /etc/apache/sites-available/adresar-google.conf musi byt kvoli presmerovaniu na www minimalne toto ?
Kód: [Vybrat]
ServerName google.com
ServerAlias www.google.com