动静分离是一种常见的Web服务器优化策略,通过将动态内容和静态内容分别由不同的服务器处理,可以显著提高网站性能。本方案使用Nginx处理静态请求,Apache处理动态请求。
确保系统已安装以下组件: - Nginx - Apache (httpd) - PHP (如果需要PHP动态内容)
安装命令示例(CentOS/RHEL):
yum install nginx httpd php php-fpm
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
):
server {
listen 80;
server_name yourdomain.com;
# 静态文件处理
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml|txt|woff|woff2|ttf|svg|eot)$ {
root /var/www/html/static;
expires 30d;
access_log off;
}
# 动态内容代理到Apache
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
编辑Apache配置文件(通常位于/etc/httpd/conf/httpd.conf
):
Listen 8080
ServerName localhost
<VirtualHost *:8080>
DocumentRoot "/var/www/html/dynamic"
ServerName yourdomain.com
<Directory "/var/www/html/dynamic">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# PHP配置(如果需要)
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
创建静态和动态内容目录:
mkdir -p /var/www/html/static
mkdir -p /var/www/html/dynamic
setsebool -P httpd_can_network_connect 1
systemctl start nginx
systemctl start httpd
systemctl enable nginx
systemctl enable httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
静态文件缓存:
Gzip压缩:
负载均衡:
HTTPS配置:
/var/log/nginx/access.log
/var/log/httpd/access_log
502 Bad Gateway错误:
静态文件404错误:
性能问题:
通过以上配置,您可以实现高效的Nginx+Apache动静分离架构,充分发挥两者的优势。