nginx反向代理到apache2的问题

我正在尝试设置一个反向代理系统,其中nginx位于前端处理来自Internet的所有请求,而apache2位于处理所有dynamic内容的后端。 我可以在基于我的域名的nginx中设置虚拟主机,但由于apache2只在127.0.0.1:8080(不面向外部),我想仍然有基于域的虚拟主机(或任何可以从nginx传递到Apache )并基于此更改dynamic内容。

基本上,我有一个nginxconfiguration在sites_available和sites_enabled基本上说,位置/ {proxy_pass http://127.0.0.1:8080/ ;}。 所以目前我不认为有任何方法来检测我们在外面的apache的域名。

我几乎完全按照这个指南设置它: http : //tumblr.intranation.com/post/766288369/using-nginx-reverse-proxy所以代码和其他人几乎是相同的。

有人有主意吗?

贾森

将以下内容添加到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中创build一个default.conf文件并定义上游服务器

 upstream apache { server 127.0.0.1:8080 weight=1 fail_timeout=120s; } 

在启用/ etc / nginx / sites-enabled的每个站点conf文件中,都使用您在default.conf中创build的上游服务器进行代理传递:

 location ~* *\.php { proxy_pass http://apache; } 

FurtiveFelon – 我扔了“nginx通主机头”到谷歌, 看到了不less结果 。 Sameer Parwani的博客的第一个结果似乎正好在你的胡同。

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

在nginx和apache中configuration虚拟主机会有点痛苦,但是如果我正确理解了你的需求,那么这个解决scheme就可以为你工作了。

 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>