PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

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

原创
2016-08-08 09:22:17 1041浏览
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教程有兴趣的朋友有所帮助。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。