我有一個 example.com 網域,有著屬於自己的服務
我希望再開另一個 docs.example.com 指到服務的文檔、文件
兩個對應到的前端網站是分開的
這時候就會使用到SubDomain
DNS設定頁
新增docs Hostname
可用A指定到IPv4,也可用CName指到已經綁定好的Domain
甚至在這些都設定完成後
還可以把 doc 前綴指定到 docs前綴
申請SSL憑證
這裡使用certbot申請憑證
certbot certonly --standalone
輸入要申請的域名 ex: entp.one www.entp.one docs.entp.one doc.entp.one
沒申請的話,若走https會有問題
Apache SubDomain 設定
在httpd-ssl.conf 或 httpd-vhosts.conf中
Step 1. 將 httpd-ssl.conf 新增以下
匹配方式有兩種方法
方法1
紅字的地方注意
上方需要讓原域名跟www都進來(否則沒加www會使www會無法匹配到)
下方需要讓doc跟docs都進來(否則沒加doc會使doc無法匹配到)
```
<VirtualHost *:443>
DocumentRoot "C:\www\entp\website"
ServerName entp.one:443
ServerAlias entp.one www.entp.one
SSLEngine on
...
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:\www\entp\docs"
ServerName docs.entp.one:443
ServerAlias doc.entp.one docs.entp.one
SSLEngine on
...
</VirtualHost>
```
方法2
使用萬用字元 *
不過順序很重要,因為 *entp.one 就符合所有條件規則、不會往底下去了
所以須將這兩個對調,讓docs在上方
```
<VirtualHost *:443>
DocumentRoot "C:\www\entp\docs"
ServerName docs.entp.one:443
ServerAlias doc.entp.one docs.entp.one
SSLEngine on
...
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:\www\entp\website"
ServerName entp.one:443
ServerAlias *.entp.one
SSLEngine on
...
</VirtualHost>
```
Step 2. httpd-vhosts.conf 則這樣即可
```
<VirtualHost *:80>
DocumentRoot "C:\www\entp\website"
ServerName entp.one
ServerAlias entp.one
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\www\entp\docs"
ServerName docs.entp.one
ServerAlias docs.entp.one
</VirtualHost>
```
ServerName 與 ServerAlias的差異
ServerName 是主機域名名稱,用來辨識自己的 Host, Port
每個虛擬主機都必須要有一個唯一的域名名稱
ex: example.com
ServerAlias 是延伸出去的Virtual Host名稱
讓ServerAlias打的網址同時就是指定到此ServerName的內容
ex: aaa.example.com、bbb.example.com、*.example2.com 這些都會指到example.com這個資源路徑來
但同時要在DNS設置好,否則根本不會連過來
沒有留言:
張貼留言