Nginx 利用子目录搭建多站点
之前已经有域名为aaa.bbb.com的网站,现在想在aaa.bbb.com/bbs/下建一个Discuz X2.5,然后在aaa.bbb.com/tomcat/下建一个java程序。服务器的环境是LNMP,配置的过程中需要不断地学习Nginx,下面做一个简要的整理。
========================= 搭建 Discuz X 2.5 ================================
参考:http://blog.163.com/cobyeah@126/blog/static/140137653201151815916438/
- 系统: Ubuntu 10.04 | all Linux
- 软件: nginx 0.7.65
说实话我并不十分了解wordpress,但看着网上的教程设置nginx的配置就觉得无奈,nnd他们到底研究过nginx的没有啊?!
if/rewrite的一大堆,需要么?
下面是我的方案,简单得很!
=======================
前些天在弄nginx下跑wordpress,wordpress放在子目录并设置了固链,配置后发现这个问题,如图:
已确认wordpress目录的权限和php进程的owner一致(对权限不熟悉的同学,执行”sudo chmod a+r $where_is_your_wordpress_path“就对了),因此确定不是权限问题。
既然权限没有问题,那么就应该是目录访问受限,需要指定index的问题了。一看,果然。
我/wordpress/ 的location下没有指定index,外头的server段也没有指定index,http段倒是指定了index.htm。 @@
于是加上 index index.php,重新启动,ok了。
我的location如下,简单吧?(nnd,网上的都是坑爹,请他们多看一下nginx的文档吧,拜托!!):
location /wp/ { index index.php; try_files $uri $uri/ /wp/index.php?$args; }
下面是我自己写的:
之前通过location /bbs/增加配置,结果只能加载到简单的html形式的网页,没有任何的效果和图片。
仿照上面的配置,然后在论坛的管理中心->全局->SEO设置->URL静态化中将“可用”选项全选,Rewrite兼容性选否。提交后查看当前的Rewrite规则,复制最下面的nginx的规则,粘贴到nginx配置文件location/bbs/中。重启nginx之后可以正常地访问论坛,当时点击某些链接会出错,这个还有待进一步测试。
下面是我的配置:
location /bbs/ {
root /usr/share/nginx/html/;
index forum.php;
try_files $uri $uri/ /upload/forum.php?args;
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
if (!-e $request_filename) {
return 404;
}
}
=========================== 代理Tomcat =================================
这个我没有太多设置,只用了一下的代码:
location /mobile/ {
proxy_pass http://127.0.0.1:8082/;
}
8082端口是tomcat的。
=========================================================================
via.https://blog.csdn.net/fwenzhou/article/details/8875472