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