试试用 Nginx 作为反向代理服务器。从 Apache 切换到 Nginx(针对 Apache2.4 进行再编辑)

我对Apache 2.4进行了重新编辑。

“mod_rpaf改为mod_remoteip”

终于试着操作了一下Nginx

買了一本临时用的Nginx书,没想到竟然被遗忘了。结果过了2年才发现。

由于我家只有一个全球IP地址,所以我使用VirtualHost来管理多个域名。虽然我可以全部使用Nginx替代,但为了学习目的我将尝试将其配置为反向代理服务器,通过Nginx -> Apache的多层配置。我知道Nginx之所以轻量快速是因为其设计理念是快速分发静态内容。

nginx.png

反向代理服务器的配置策略

在作为反向代理服务器运行的主机上安装Nginx。同时确保已经进行了DNS设置,可以解析子域名。此外,基本上不改变已有Apache的配置,以便在有问题时能够迅速恢复到原始配置。

nginx2.png

安装

如果没有特殊需求需要使用特殊功能的话,安装包版本是最好的选择。当然,包版本的Nginx只安装了默认功能,如果需要扩展功能的话就需要从源代码进行编译(可以通过nginx -V命令查看功能)。

在CentOS6.x上安装nginx的最新版本的步骤。

配置文件

在/etc/nginx/conf.d目录下创建一个以适当文件名命名的配置文件。

server {
    listen 80;
    server_name バーチャルホスト名; ← 外部から引けること

    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host            $http_host;
    proxy_redirect      off;
    proxy_max_temp_file_size    0;

    location / {
        proxy_pass http://192.168.11.88;
    }
}

隐藏Nginx版本信息

由于公开服务器不应该公开过多信息,所以我们会隐藏版本信息。

http {
  server_tokens off;
  ...

mod_remoteip的配置

后记的mod_rpaf在Apache2.4上使用需要一些窍门,因此从Apache2.2开始,标准模块已更换为mod_remoteip。

只需将 RemoteIPHeader X-Forwarded-For 的设置方法指定在 /etc/httpd/conf/httpd.conf 文件的末尾即可。

将访问日志指定的LogFormat部分定义更改为以下方式。
※指定%a将输出访问的来源IP。

LogFormat "%h ・・・・
↓
LogFormat "%a ・・・・

使用mod_remoteip可以正确识别位于负载均衡器下的Apache的访问源IP。

安装mod_rpaf(不推荐用于Apache2.4)

当Apache服务器接收到由反向代理服务器转发的信息时,会记录下反向代理服务器的地址(192.168.11.88),这会造成一些问题。因此,需要在Apache服务器上安装mod_rpaf模块来解决这个问题。如果是在Apache 2.4上使用,稍微有点技巧,可以使用mod_remoteip模块来代替。

使用Lebah Proxy / Load Balancer和mod_rpaf,尝试将nginx+apache打造成稍微舒适的Web服务器
在nginx中,反向代理无法传递主机名给后端服务器。

试试摸索 Nginx

虽然有点儿对Nginx不太喜欢的感觉,但是它的配置文件直观且易懂,可能还不错。
我觉得设置反向代理服务器的配置居然也挺简单的。

请以汉语将以下内容进行改写:只需一个选项。

重新书写

由于Apache记不住,所以每次都要使用Rewrite的链接备忘录。

Apache重写学习

请参考以下网站

使用Nginx进行反向代理的技巧
通过虚拟的CentOS中的nginx+Apach2进行反向代理
Nginx系列文章的第三篇:Nginx的配置,第一部分