原文地址: https://www.jeremyjone.com/505/ ,轉載請註明。
Apache建站很容易,但是並不像IIS那樣隨便點幾下就萬事OK了,還是需要我們經過一些簡單的配置才能正常運行。
對於Apache,我也僅僅是簡單接觸,最近研究了一下二級域名的配置方法,也是出於好奇吧,把我的配置過程分享一下,對於多網站,這個是完全同理的,因爲多網站和二級域名都屬於跨域操作。
1、配置httpd.conf
設置多個站點,我們需要設置Apache提供的VirtualHost
功能,我在網上看了不少教程,有很多坑,我一個一個都試過了,最後找到適合我的方案。
首先打開httpd.conf
,這個是Apache的配置文件,因系統不同,可能名稱和路徑都不相同,以自己電腦爲準:
- 我的配置:Apache/2.4.6 (CentOS)
vim /etc/httpd/conf/httpd.conf
打開後在大約80行的地方(如下圖所示),找到'Main' server configuration
我看了很多網上的教程,都是什麼直接解鎖註釋就OK了,很不幸,2.4.6版本已經沒有註釋的代碼了。。。所以需要我們自己填寫。不過這段註釋文本已經寫的很明白,我們照葫蘆寫即可。
所以其實這段代碼不一定寫在這裏,不過我還是習慣在相關注釋文本下寫對應的代碼塊。將如下代碼添加到此處,也就是上圖的代碼部分(88行開始)
其實這個就是默認配置,註釋已經寫明白,如果配置了<VirtualHost>
,那麼默認配置將會被覆蓋,爲了默認可以正常使用,我們需要把這段配置放在第一個。
# 這是默認站點配置
<VirtualHost *:80>
ServerAdmin root@localhost
ServerName localhost:80
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
# 這是自定義的新站點配置
<VirtualHost *:80>
ServerAdmin root@localhost # 你的郵箱
ServerName api.jeremyjone.com # 該站點的訪問域名
DocumentRoot "/var/www/html2" # 該站點文件路徑
<Directory "/var/www/html2"> # 該站點路徑訪問權限
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
然後重啓:
systemctl restart httpd
嗯,你沒看錯,他已經可以了。當然,不要忘記創建上面新建的/var/www/html2
文件夾,並且聲稱一個index.html
文件,這樣,api.jeremyjone.com
就可以訪問了。我的測試效果如下:
它的確已經成功了,但是此時它顯示的是"不安全",這個很頭疼。因爲它是新站點,需要重新配置SSL,所以,我們還需要配置一下SSL。
2、配置SSL.conf
同樣的,打開vim /etc/httpd/conf.d/ssl.conf
文件,不用細看,直接反倒最下面,他應該是以</VirtualHost>
結尾,沒有錯,這個配置文檔本身完完全全是爲了我們的默認主站點配置的。我們現在只需要在下面創建一個新配置即可。
<VirtualHost *:443>
DocumentRoot "/var/www/html2"
ServerName api.jeremyjone.com
SSLEngine on
SSLCertificateFile 你的certificateFile文件
SSLCertificateKeyFile 你的certificateKeyFile文件
SSLCertificateChainFile 你的certificateChainFile文件
</VirtualHost>
- SSL認證文件可以在各個雲服務商免費索取。注意,免費的SSL認證只支持單個站點,即 www.jeremyjone.com 與 api.jeremyjone.com 不通用,需要單獨索取。
嗯,同樣就這麼簡單,他也配置好了,現在我們可以使用https://api.jeremyjone.com 訪問我們的新站點了。
對於http跳轉到https,還需要另外設置.htaccess
文件,在/var/www/html2
文件夾下創建一個新的.htaccess
文件,把下列代碼複製過去即可:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^api.jeremyjone.com [NC]
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/tz.php
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
多個網站已經在像你招手了,快去試一下。