Heim  >  Artikel  >  Backend-Entwicklung  >  使用proxy解决nginx alias无法执行PHP等fastcgi问题

使用proxy解决nginx alias无法执行PHP等fastcgi问题

WBOY
WBOYOriginal
2016-08-08 09:22:171277Durchsuche
nginx下的alias好像是为只为静态文件服务的,对于FastCGI如PHP之类的总是会出现错误,典型的就是404。
对此,网上已经有了一些解决方案,如:http://u.odo.com.cn/space-2-do-blog-id-3087.html 如此设置在应用相对简单下的确可用,如根目录并没有程序或不需要rewrite等情况。
而在实际应用中往往需要相对更复杂的配置,如流行的单入口程序需要将不存在的文件访问交给index.php,这样就会存在冲突而导致访问错误。而且如此配置也会对未来的扩展带来维护风险。
近期我也遇到了这个问题,问了下google也没有找到合适的答案,为此我想何不反其道而行之,将一个vhost拆分成多个,由根目录进行proxy代理解决,配置如下:

复制内容到剪贴板

代码:
location ^~ /bbs {
alias /srv/www/bbs;
proxy_set_header Host bbs.xxx.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1;
}location 的 ^~ 含义是匹配此路径后无视其他 location 配置, 包括 location /。这样 rewrite 或其他就配置不会对此产生任何影响。
到这里可能就有人要问,既然这么麻烦为什么不直接使用虚拟主机,而要反向代理多一次请求呢?
对此呢原因是很多可能的,比如AJAX、javascript、cookie等在跨域情况下不易处理,URL向前兼容等。

以上就介绍了使用proxy解决nginx alias无法执行PHP等fastcgi问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn