nginx 反向代理到 apache2 的问题

nginx 反向代理到 apache2 的问题

我正在尝试设置一个反向代理系统,其中 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

FurtiveFelon - 我在 Google 中输入了“nginx pass host header”看到不少结果。 这第一个结果Sameer Parwani 博客中的内容似乎很符合您的兴趣。

# pass along header with reverse proxy requests
proxy_set_header Host $host;

在 nginx 和 apache 中配置虚拟主机会有点麻烦,但如果我正确理解了您的要求,该解决方案应该适合您。

答案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>

相关内容