试试用 Nginx 作为反向代理服务器。从 Apache 切换到 Nginx(针对 Apache2.4 进行再编辑)
我对Apache 2.4进行了重新编辑。
“mod_rpaf改为mod_remoteip”
终于试着操作了一下Nginx
買了一本临时用的Nginx书,没想到竟然被遗忘了。结果过了2年才发现。
由于我家只有一个全球IP地址,所以我使用VirtualHost来管理多个域名。虽然我可以全部使用Nginx替代,但为了学习目的我将尝试将其配置为反向代理服务器,通过Nginx -> Apache的多层配置。我知道Nginx之所以轻量快速是因为其设计理念是快速分发静态内容。
![nginx.png](https://cdn.silicloud.com/blog-img/blog/img/657d2c0137434c4406c4c318/5-0.png)
反向代理服务器的配置策略
在作为反向代理服务器运行的主机上安装Nginx。同时确保已经进行了DNS设置,可以解析子域名。此外,基本上不改变已有Apache的配置,以便在有问题时能够迅速恢复到原始配置。
![nginx2.png](https://cdn.silicloud.com/blog-img/blog/img/657d2c0137434c4406c4c318/8-0.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的配置,第一部分