nginx+apache单IP多站点反向代理配置
2018-01-16 22:45
525 查看
需求:
有两个apache的站点www.aaa.com和www.bbb.com,当访问www.aaa.com/ccc时连接到一个python的服务端,www.aaa.com/ccc必须使用80端口传入服务器,两个apache的站点也只能用80端口访问,所以自然想到用nginx反向代理。有两种方案可行:
一种是将两个apache的站点配置为不同端口,nginx将根据传入URL转发到两个站点和python的服务端对应的三个不同端口上去。
另一种是将两个apache站点配置为相同的端口,nginx将URL转发到apache和python的服务端,由apache再根据URL解析到不同的目录。
#####【第一种方案】#####
先是nginx的代理配置,其实很简单:
首先在config的http块里面确保有这么一句话:
http{ … include /etc/nginx/conf.d/*.conf; …… }
是为了保证能找到代理配置信息
在/conf.d目录下新建conf,可以为任意名,后缀必须为.conf,然后写入如下内容:
server { listen 80; server_name www.aaa.com aaa.com; location / { proxy_pass http://127.0.0.1:666; } location /ccc { proxy_pass http://127.0.0.1:888; } } server { listen 80; server_name www.bbb.com bbb.com; location / { proxy_pass http://127.0.0.1:777; } }
应该很好理解,将传入URL根据server_name进行匹配转发到对应端口,而apache的配置则是将两个站点分别监听两个不同的端口,python服务端监听888端口。
apache配置在conf文件内:
首先找到Listen位置,将默认的
Listen 80
改为:
Listen 666 Listen 777
ServerName改为服务器对外IP:
ServerName x.x.x.x
配置VirtualHost:
<VirtualHost *:666> ServerName www.aaa.com DocumentRoot /home/www/aaa </VirtualHost> <VirtualHost *:777> ServerName www.bbb.com ServerAlias *.bbb.com DocumentRoot /home/www/bbb </VirtualHost>
其中ServerAlias字段是可选的,可以匹配更多的域名。注意这里的“*:666”和“*:777”不能换成外网IP:666即x.x.x.x:666,因为是从nginx转发过来的,可以填127.0.0.1:666。
#####【第二种方案】#####
也是先保证nginx的conf文件配置正确,同上。
配置nginx的conf:
server { listen 80; server_name www.aaa.com aaa.com; location / { proxy_redirect off; 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_pass http://127.0.0.1:666; } location /ccc { proxy_pass http://127.0.0.1:888; } } server { listen 80; server_name www.bbb.com bbb.com; location / { proxy_redirect off; 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_pass http://127.0.0.1:666; } }
注意一定要设置proxy_set_header Host项,这样当nginx转发给apache后apache能得到正确的传入URL,这样才能完成多站点的解析。
配置apache,打开conf,找到Listen,改为:
Listen 666
ServerName仍改为外网IP
ServerName x.x.x.x
在最下面的VirtualHost进行配置:
NameVirtualHost *:666 <VirtualHost *:666> ServerName www.aaa.com DocumentRoot /home/www/aaa </VirtualHost> <VirtualHost *:666> ServerName www.bbb.com DocumentRoot /home/www/bbb </VirtualHost>
此处必须开启NameVirtualHost配置,这样apache才能支持根据名称进行多站点解析,更多信息可以参考Apache的虚拟主机配置例程:
http://httpd.apache.org/docs/2.2/vhosts/examples.html
该例程包含根据IP、端口、域名进行多站点配置的示例。
当然,前文所有配置只保留了最基本的相关的字段,如果还有别的需求,可以增加如ServerAlias、ErrorLog、CustomLog等等。
【拓展】:
VirtualHost Examples:
http://httpd.apache.org/docs/2.2/vhosts/examples.html
Nginx + Apache 配置反向代理和静态资源缓存:
http://blog.csdn.net/zhang_red/article/details/42925681
【原文链接: http://www.straka.cn/blog/nginx_apache_multisites_conf/】
相关文章推荐
- 相同Ip 不同端口配置Nginx反向代理Apache
- Apache2.2.x+tomcat单IP多域名多站点的虚拟主机配置详解(win2003环境)
- Apache配置反向代理、负载均衡和集群(mod_proxy方式) 经典
- Apache配置正向代理和反向代理的方法
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- apache配置反向代理笔记
- IIS6+Win2003 配置反向代理 到 apache 成功
- apache一个IP多个站点的配置方法
- 【反向代理】xampp apache配置反向代理 2015-07-30 17:43 4人阅读 评论(0) 收藏
- varnish反向代理--apache获取真实ip
- apache配置反向代理
- apache 配置动静分离,允许跨域, 并在反向代理的情况下维持默认主页
- Apache配置反向代理、负载均衡和集群(mod_proxy方式)
- Apache2.4+Tomcat9.0配置反向代理
- 【反向代理】xampp apache配置反向代理
- 配置apache 实现多域名反向代理转发
- Apache 配置反向代理
- Apache:反向代理配置
- window环境下apache+tomcat 反向代理集群配置教程
- 安装编译Apache模块,配置反向代理