编程技术分享平台

网站首页 > 技术教程 正文

7、Nginx+Apache环境配置——动静分离

xnh888 2024-09-25 23:42:46 技术教程 19 ℃ 0 评论

在Web服务器中,动态请求是指该请求需要服务器端的程序处理,而静态请求不需要程序处理,直接读取文件并返回即可,例如html,css,js,images等文件,针对这两种请求各自的特点,可以由Nginx提供对外访问,静态请求直接由Nginx处理,动态请求转交给Apache处理,这样就实现了动静分离。

1、更改Apache监听端口

当Nginx作为前端Web服务器后就会占用80端口,为了让Apache正常运行,需要改变Apache监听端口,下面将端口修改为81端口:

httpd.conf配置文件:

httpd-vhosts.conf配置文件:

2、更改Nginx对动态请求的处理

proxy_pass:用于代理客户端浏览器请求Apache服务器;

proxy_set_header:用于发送Host消息头;

Nginx在代理请求时能够自动传递来自客户端浏览器的请求消息头,但是无法传递Host消息头,因此需要设置proxy_set_header指令;

Nginx的$host变量保存了当前请求的主机名,即虚拟主机:www.test.org,放在Host消息头中用于告知Apache当前请求的虚拟主机。

3、传递客户端IP地址

在Web服务器中,REMOTE_ADDR表示客户端的IP地址,若要获取真实的客户端IP地址,需要Nginx将客户端IP用户另一种方式传递给Apache,这里借助HTTP请求消息头,我们可定义一个专门用于传递客户端IP的消息头X-Client-IP,当Nginx获取到客户端IP后,将IP放入消息头发送给Apache,然后在Apache中替换REMOTE_ADDR即可。

在原有虚拟主机上配置的基础上增加X-Client-IP消息头:

Nginx提供的$rremote_addr变量保存了客户端IP地址,然后将其添加到X-Client-IP中,如果Nginx收到的请求中已经存在X-Client-IP消息头,则会被替换,从而防止伪造客户端IP的情况发生。

Apache模块mod_remoteip用于检测REMOTE_ADDR是否为代理服务器的IP,如果是则从自定义的HTTP消息头中读取IP,在httpd.conf中启动mod_remoteip.so模块,并指定消息头的名称和代理服务器的IP地址。

上述配置后,当Apache的mod_remoteip模块检测到REMOTE_ADDR为127.0.0.1时,就会用X-Client-IP的值替换,然后清除X-Client-IP消息头。

上篇:6、Nginx+Apache环境配置--Apache安装配置

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表