部署Nginx+Apache动静分离的方法

发布时间:2022-06-02 11:51:42 作者:iii
来源:亿速云 阅读:253

部署Nginx+Apache动静分离的方法

在现代Web应用中,动静分离是一种常见的优化策略。通过将静态资源(如图片、CSS、JavaScript文件)和动态内容(如PHP、Python生成的页面)分别由不同的服务器处理,可以显著提高网站的性能和响应速度。本文将详细介绍如何部署Nginx和Apache来实现动静分离。

1. 动静分离的基本概念

动静分离的核心思想是将静态资源和动态内容分别由不同的服务器处理。通常,Nginx作为前端服务器处理静态资源,而Apache作为后端服务器处理动态内容。这种架构的优势在于:

2. 环境准备

在开始部署之前,确保你已经具备以下环境:

2.1 安装Nginx

首先,更新系统包并安装Nginx:

sudo apt update
sudo apt install nginx

安装完成后,启动Nginx并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

2.2 安装Apache

接下来,安装Apache:

sudo apt install apache2

启动Apache并设置开机自启:

sudo systemctl start apache2
sudo systemctl enable apache2

2.3 安装PHP

为了处理动态内容,我们需要安装PHP及其相关模块:

sudo apt install php libapache2-mod-php php-mysql

安装完成后,重启Apache以加载PHP模块:

sudo systemctl restart apache2

3. 配置Nginx和Apache

3.1 配置Nginx

首先,编辑Nginx的默认配置文件:

sudo nano /etc/nginx/sites-available/default

在配置文件中,找到server块,并添加以下内容:

server {
    listen 80;
    server_name example.com;

    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;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt|zip|tar|gz|rar|bz2|doc|xls|exe|ppt|mp3|mp4|avi|flv|mov|wmv|swf|ogg|ogv|webm|svg|woff|woff2|ttf|eot)$ {
        root /var/www/html;
        expires 30d;
    }
}

解释: - proxy_pass:将动态请求转发到Apache的8080端口。 - location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt|zip|tar|gz|rar|bz2|doc|xls|exe|ppt|mp3|mp4|avi|flv|mov|wmv|swf|ogg|ogv|webm|svg|woff|woff2|ttf|eot)$:匹配静态资源文件,并设置缓存时间。

保存并退出编辑器,然后测试Nginx配置:

sudo nginx -t

如果没有错误,重启Nginx:

sudo systemctl restart nginx

3.2 配置Apache

接下来,配置Apache以监听8080端口。编辑Apache的默认配置文件:

sudo nano /etc/apache2/ports.conf

找到Listen 80,将其改为Listen 8080

Listen 8080

然后,编辑默认的虚拟主机配置文件:

sudo nano /etc/apache2/sites-available/000-default.conf

<VirtualHost *:80>改为<VirtualHost *:8080>

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

保存并退出编辑器,然后重启Apache:

sudo systemctl restart apache2

4. 测试动静分离

4.1 创建测试文件

/var/www/html目录下创建一个静态文件和一个动态文件:

sudo nano /var/www/html/test.html

内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>Static Test</title>
</head>
<body>
    <h1>This is a static HTML file.</h1>
</body>
</html>

然后,创建一个PHP文件:

sudo nano /var/www/html/test.php

内容如下:

<?php
echo "This is a dynamic PHP file.";
?>

4.2 访问测试文件

在浏览器中访问http://example.com/test.html,你应该看到静态HTML文件的内容。然后访问http://example.com/test.php,你应该看到动态PHP文件的内容。

4.3 检查日志

为了确认动静分离是否生效,可以检查Nginx和Apache的日志文件。

查看Nginx的访问日志:

sudo tail -f /var/log/nginx/access.log

查看Apache的访问日志:

sudo tail -f /var/log/apache2/access.log

你应该看到静态资源的请求由Nginx处理,而动态内容的请求由Apache处理。

5. 优化与扩展

5.1 启用Gzip压缩

为了进一步优化性能,可以在Nginx中启用Gzip压缩。编辑Nginx配置文件:

sudo nano /etc/nginx/nginx.conf

http块中添加以下内容:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

保存并退出编辑器,然后重启Nginx:

sudo systemctl restart nginx

5.2 配置缓存

为了提高静态资源的加载速度,可以在Nginx中配置缓存。编辑Nginx的默认配置文件:

sudo nano /etc/nginx/sites-available/default

location块中添加以下内容:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt|zip|tar|gz|rar|bz2|doc|xls|exe|ppt|mp3|mp4|avi|flv|mov|wmv|swf|ogg|ogv|webm|svg|woff|woff2|ttf|eot)$ {
    root /var/www/html;
    expires 30d;
    add_header Cache-Control "public, no-transform";
}

保存并退出编辑器,然后重启Nginx:

sudo systemctl restart nginx

5.3 负载均衡

如果你的网站流量较大,可以考虑使用Nginx作为负载均衡器,将请求分发到多个Apache后端服务器。编辑Nginx的默认配置文件:

sudo nano /etc/nginx/sites-available/default

http块中添加以下内容:

upstream backend {
    server 127.0.0.1:8080;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        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;
    }

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt|zip|tar|gz|rar|bz2|doc|xls|exe|ppt|mp3|mp4|avi|flv|mov|wmv|swf|ogg|ogv|webm|svg|woff|woff2|ttf|eot)$ {
        root /var/www/html;
        expires 30d;
    }
}

保存并退出编辑器,然后重启Nginx:

sudo systemctl restart nginx

6. 总结

通过部署Nginx和Apache实现动静分离,可以显著提高网站的性能和响应速度。Nginx负责处理静态资源和高并发请求,而Apache负责处理复杂的动态内容。通过合理的配置和优化,可以进一步提升系统的稳定性和扩展性。

希望本文对你理解和部署Nginx+Apache动静分离有所帮助。如果你有任何问题或建议,欢迎在评论区留言。

推荐阅读:
  1. Centos 7.3部署LAMP架构动静分离
  2. 部署LAMP动静分离

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx apache

上一篇:nginx共享内存机制实例分析

下一篇:Nginx如何根据url中的path动态转发到upstream

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》