正常來說,Apache的網站配置檔會在「/etc/apache2/sites-available」之下,因此可以為每個網站建立不同的配置檔。
配置HTTP (80 port)
編輯「/etc/apache2/sites-available/<your.domain.name>.conf」
<VirtualHost *:80>
# 配置網站資訊
ServerName <your.domain.name>
ServerAdmin admin@localhost
DocumentRoot /var/www/<網站根目錄>
# 配置LOG資訊
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# 代理設定
# ProxyPass / http://localhost:8080/ # 導到http
# ProxyPass / unix:/path/to/project/uwsgi/uwsgi.sock # 導到uwsgi
# [可選] 配置Rewrite資訊(需要啟用mod_rewrite)
#ReDirect any HTTP request to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>
有些情況要啟用模組
若有啟用RewriteEngine,要啟用模組
sudo a2enmod mod_rewrite
若有啟用proxy,要啟用模組
# PROXY
sudo a2enmod proxy
# PROXY到HTTP
sudo a2enmod proxy_balancer
sudo a2enmod proxy_http
# PROXY到uWSGI
sudo a2enmod proxy_uwsgi
若有啟用ssl,要啟用模組
sudo a2enmod ssl
配置HTTPS (SSL 443 port)
編輯「/etc/apache2/sites-available/<your.domain.name>-ssl.conf」
<IfModule mod_ssl.c>
<VirtualHost *:443>
# 開啟SSL
SSLEngine On
SSLCertificateFile /path/to/you_domain_ssl_cert/cert.pem
SSLCertificateKeyFile /path/to/you_domain_ssl_cert/privkey.pem
SSLCertificateChainFile /path/to/you_domain_ssl_cert/fullchain.pem
# 網站設定
ServerName <your.domain.name>
ServerAlias <your.domain.name>
DocumentRoot /var/www/<網站根目錄>
# 網站日誌
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
</IfModule>
編輯「/etc/apache2/ports.conf」打開apache監聽port
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
打開防火牆
ufw allow 443
sudo ufw reload
配置目錄存取規則
配置目錄設定,編輯「/etc/apache2/apache2.conf」
<Directory /var/www/<網站根目錄> >
Options Indexes FollowSymLinks # 若想禁止存取檔案,改為Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
啟用配置
查看已啟用的conf檔
ls -la /etc/apache2/sites-enabled
啟用網站配置並重置伺服器(ssl和非ssl若有多個conf檔,多個都要啟用)
# 啟用網站配置
sudo a2ensite <your.domain.name>
sudo a2ensite <your.domain.name>-ssl
# 重新載入Apache2配置
sudo systemctl reload apache2
# 重啟Apache2
sudo systemctl restart apache2
# 停止Apache2
sudo systemctl stop apache2
# 啟動Apache2
sudo systemctl start apache2