温馨提示×

Ubuntu Apache如何实现动静分离

小樊
60
2025-08-08 00:07:00
栏目: 智能运维

在Ubuntu上使用Apache实现动静分离,通常涉及以下几个步骤:

1. 安装Apache服务器

首先,确保你的Ubuntu系统上已经安装了Apache。如果没有安装,可以使用以下命令进行安装:

sudo apt update sudo apt install apache2 

2. 配置虚拟主机

为了实现动静分离,你需要配置多个虚拟主机,一个用于处理静态文件,另一个用于处理动态请求。

静态文件虚拟主机

创建一个新的配置文件来处理静态文件:

sudo nano /etc/apache2/sites-available/static-site.conf 

在文件中添加以下内容:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/static <Directory /var/www/static> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/static-site_error.log CustomLog ${APACHE_LOG_DIR}/static-site_access.log combined </VirtualHost> 

保存并关闭文件。

动态请求虚拟主机

创建另一个配置文件来处理动态请求:

sudo nano /etc/apache2/sites-available/dynamic-site.conf 

在文件中添加以下内容:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/dynamic <Directory /var/www/dynamic> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ErrorLog ${APACHE_LOG_DIR}/dynamic-site_error.log CustomLog ${APACHE_LOG_DIR}/dynamic-site_access.log combined </VirtualHost> 

保存并关闭文件。

3. 启用虚拟主机

启用这两个虚拟主机配置:

sudo a2ensite static-site.conf sudo a2ensite dynamic-site.conf 

4. 配置重写规则(可选)

如果你希望动态请求通过特定的URL路径进行处理,可以使用Apache的重写模块。编辑动态站点的配置文件:

sudo nano /etc/apache2/sites-available/dynamic-site.conf 

添加以下内容:

<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/dynamic <Directory /var/www/dynamic> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> RewriteEngine On RewriteCond %{REQUEST_URI} ^/api/ RewriteRule ^api/(.*)$ http://localhost:8080/$1 [P,L] ErrorLog ${APACHE_LOG_DIR}/dynamic-site_error.log CustomLog ${APACHE_LOG_DIR}/dynamic-site_access.log combined </VirtualHost> 

保存并关闭文件。

5. 重启Apache服务器

最后,重启Apache服务器以应用所有更改:

sudo systemctl restart apache2 

6. 测试配置

确保静态文件和动态请求都能正确处理。你可以将静态文件放在/var/www/static目录下,将动态应用放在/var/www/dynamic目录下,并通过浏览器访问相应的URL进行测试。

通过以上步骤,你就可以在Ubuntu上使用Apache实现动静分离了。

0