Nginx(用于静态文件)和 Apache(用于动态内容)?

Nginx(用于静态文件)和 Apache(用于动态内容)?

所以,我的整个应用程序在 Apache 上运行良好。但是,我想测试一下如果我将所有静态文件都通过 nginx,每秒请求数会增加多少。

我找到了这个帖子: https://stackoverflow.com/questions/869001/how-to-serve-all-existing-static-files-directly-with-nginx-but-proxy-to-apache-t

但是我有几个问题。我对 nginx 完全陌生,所以我不知道该把配置放在哪里。(文件位于 /etc/nginx/nginx.conf,但我不知道我是否只需将代码添加到底部还是怎样?)

另外,我怎样才能让两台服务器同时运行?是因为它们都监听端口 80 吗?现在我必须停止一台服务器才能启动另一台,这就是我所能做到的。

谢谢你的帮助。

答案1

如果它们位于不同的 IP 上,则可以位于同一端口上。或者它们可以位于具有相同 IP 的不同端口上,但不能同时位于两者上(也可以是不同的 IP 和不同的端口)。如果它们是不同的服务器,则需要多个 IP 方案,但您可以在同一个服务器上使用多个 IP。

我发誓我不是想迷惑你:-)

位置指令您提供的链接将进入服务器指令(请注意,在 location 指令的文档中有“context: server ”)。如果您使用的是带有默认 apt 安装的较新 Ubuntu 版本,则可能需要在 sites-enabled 目录中编辑 default 。例如(有点愚蠢,因为它将所有内容传递给 Apache):

server {
    listen   80 default;

    access_log  /var/log/nginx/localhost.access.log;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:2500;
    }
}

在这种情况下,我对两者使用相同的服务器。Nginx 监听 80,Apache 监听 2500。您需要将 DNS 指向 Nginx 服务器的 IP,因为该服务器通过代理其他服务器来处理所有请求。基本上,从客户端的角度来看,它们只与 Nginx 服务器通信。

答案2

我无法帮助解决 nginx 配置问题,因为我自己还没有用过它,但如果你看一下你链接到的那个问题中的配置片段,你会看到 Apache 在端口 8080 上运行。这是同时运行两者的关键 - 它们需要位于不同的端口上。因为 nginx 是 Apache 的代理,所以用户永远不会看到后者在哪个端口上运行,也不需要知道。

相关内容