Konfigurasikan Apache untuk melayani beberapa subdomain melalui HTTP + HTTPS

3

Saya memiliki server virtual yang dihosting di ISP dengan 2 alamat IPv4 publik. Saya ingin menjalankan beberapa subdomain (lebih dari 2) dengan Apache dan melayani mereka melalui HTTP dan HTTPS. Sertifikat SSL adalah wildcard untuk * .mydomain.com.

Saya mencoba mengkonfigurasi Apache dalam Debian dengan cara ini tetapi gagal. Baik virtualhosts saya tidak diterima atau saya mendapatkan kesalahan SSL. (Saya tahu bahwa Apache tidak melihat nama host diminta sebelum menyajikan sertifikat tetapi sertifikat tersebut mencakup semua subdomain yang mungkin)

Tolong bantu untuk membuat httpd.conf yang berfungsi paling baik dengan tata letak konfigurasi Apache Debian.

Semua detail:

  • Apache mendengarkan pada *: 80 untuk HTTP dan *: 443 untuk HTTPS
  • Semua NameVirtualHosts, alias, dll. Harus ditentukan untuk kedua port / protokol sekaligus
  • default mydomain.com dan www.mydomain.com harus di-root ke / var / www
  • NameVirtualHosts tambahan untuk foo.mydomain.com dan bar.mydomain.com dll. yang dapat dikonfigurasi secara khusus, misalnya untuk memiliki DocumentRoot lain
Pengguna Apache
sumber

Jawaban:

5

Apache dapat melihat nama host yang diminta, menggunakan TLS Server Name Indication .

Namun, ini membutuhkan browser web yang relatif baru. Misalnya, mereka yang menggunakan Internet Explorer pada Windows XP akan menerima pesan ketidakcocokan sertifikat untuk domain tambahan. (Syukurlah, pengguna WinXP / IE hampir punah.) Artikel Wikipedia memiliki daftar, dan inilah halaman uji jika Anda tidak yakin.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>
</VirtualHost>

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/example.com.pem
</VirtualHost>

Domain (sub) tambahan:

<VirtualHost *:80>
    ServerName foo.example.com
    DocumentRoot /sites/foo
</VirtualHost>

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /sites/foo

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/foo.example.com.pem
</VirtualHost>
grawity
sumber
Terima kasih banyak atas balasan Anda yang terdidik! Hanya saja saya lebih suka tidak mengandalkan fitur baru-baru ini ... Saya memiliki wildcard .mydomain.tld dan ingin mendefinisikan SSL untuk * semua subdomain sekaligus. Apa yang saya cari adalah cara untuk mendefinisikan namevirtualhosts sekali dan membiarkannya dilayani melalui HTTP dan HTTPs tanpa entri ganda.
Pengguna Apache