在Ubuntu上使用Apache2實現動靜分離,通常是通過配置Apache的mod_proxy
和mod_proxy_http
模塊來將動態請求和靜態資源請求分別代理到不同的后端服務器。以下是一個基本的步驟指南:
安裝Apache2(如果尚未安裝):
sudo apt update
sudo apt install apache2
啟用必要的模塊:
啟用mod_proxy
和mod_proxy_http
模塊,這些模塊允許Apache作為反向代理。
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_html
sudo a2enmod headers
sudo systemctl restart apache2
配置虛擬主機:
編輯你的虛擬主機配置文件,通常位于/etc/apache2/sites-available/
目錄下。例如,編輯000-default.conf
文件:
sudo nano /etc/apache2/sites-available/000-default.conf
設置靜態資源目錄: 在虛擬主機配置中,設置一個目錄用于存放靜態資源,并配置Apache直接提供這些資源。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# 靜態資源配置
Alias /static/ /var/www/static/
<Directory /var/www/static>
Require all granted
</Directory>
# 動態請求代理配置
ProxyPass /api http://backend_server:port/api
ProxyPassReverse /api http://backend_server:port/api
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在這個配置中:
Alias /static/ /var/www/static/
將 /static/
路徑映射到靜態資源目錄 /var/www/static/
。ProxyPass /api http://backend_server:port/api
和 ProxyPassReverse /api http://backend_server:port/api
將 /api
路徑的請求代理到后端服務器。重啟Apache: 保存并關閉配置文件后,重啟Apache以應用更改。
sudo systemctl restart apache2
驗證配置:
確保靜態資源和動態請求都能正確訪問。例如,訪問 http://your_server/static/image.png
應該直接顯示靜態圖片,而訪問 http://your_server/api/data
應該返回后端服務器的數據。
通過以上步驟,你就可以在Ubuntu上使用Apache2實現動靜分離。根據實際需求,你可以進一步調整和優化配置。