我正在尝试设置一个反向代理系统,其中 nginx 位于前端处理来自互联网的所有请求,而 apache2 位于后端处理所有动态内容。我可以根据我的域在 nginx 中设置虚拟主机,但是由于 apache2 仅监听 127.0.0.1:8080(不面向外部),因此我仍然希望基于域(或可以从 nginx 传递到 apache 的任何内容)设置虚拟主机并根据它更改动态内容。
基本上,我在 sites_available 和 sites_enabled 中有一个 nginx 配置,它基本上说明了位置/{proxy_passhttp://127.0.0.1:8080/;}。因此,目前我认为没有任何方法可以检测出 Apache 外部有哪个域。
我几乎完全按照这个指南进行设置:http://tumblr.intranation.com/post/766288369/using-nginx-reverse-proxy 所以代码和其他的几乎是一样的。
有人有主意吗?
杰森
答案1
将以下内容添加到 apache ports.conf
NameVirtualHost *:8080
Listen 8080
然后在每个域虚拟主机中:
<VirtualHost *:8080>
ServerAdmin [email protected]
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /srv/www/yourdomain.com/public_html
ErrorLog /srv/www/yourdomain.com/logs/error.log
CustomLog /srv/www/yourdomain.com/logs/access.log combined
</VirtualHost>
在 /etc/nginx/sites-enabled 中创建 default.conf 文件并定义上游服务器
upstream apache {
server 127.0.0.1:8080 weight=1 fail_timeout=120s;
}
在 /etc/nginx/sites-enabled 中的每个站点 conf 文件中,使用您在 default.conf 中创建的上游服务器进行代理传递:
location ~* *\.php {
proxy_pass http://apache;
}
答案2
答案3
NameVirtualHost 127.0.0.1:8080
<VirtualHost 127.0.0.1:8080>
ServerName firstdomain.com
ServerAlias www.firstdomain.com
...
</VirtualHost>
<VirtualHost 127.0.0.1:8080>
ServerName seconddomain.com
ServerAlias www.seconddomain.com
...
</VirtualHost>