安安 版主早 先进早 及在场的各位版众早
小弟最近在架frontend, backend Server
用了Nginx及apache来做测试
安装方面就不多做说明了
其它规格如下:
OS: Ubuntu 12.04
Cpu: 1
Ram: 512MB
Storage: 8G
(说这些好像没什么帮助)
有两个子网域在"同一台"机器上
两个分别打到"同一台机器"上不同的资料夹去
nginx的 server设定如下:
vim test.com
server {
listen 80;
root /var/www/test1;
index index.php;
server_name test1.my.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
echo $uri;
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 80;
root /var/www/test2;
index index.php;
server_name test2.my.com;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
echo $uri;
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
location ~ /\.ht {
deny all;
}
}
===============================================================
Apache2的设定如下
NameVirtualHost *:8080
Listen 8080
<VirtualHost *:8080>
DocumentRoot /var/www/test1
ServerName test1.my.com
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot /var/www/test2
ServerName test2.my.com
</VirtualHost>
apache2这也调效过很多次,一开始defalut的设定都有带进去过
.htaccess也有开关试过
rewritemod也有开关试过
最后问题是:
可以正常work任何在URL下有指定 *.php的东西进来
可是碰到要rewrite url的app
好比test1是wordpress (有用.htaccess设定 rewrite)
test2是drupal或yii之类也有rewrite url的
只要是干净的url(除了root)
ex: test1.my.com/controller/action
ex: test2.my.com/login
也就是为了要吃index.php来rewrite 干净url的
后面的在nginx pass给apache后,都会让apache执行完index.php后
不知道要去解决 index.php/controller/action 后的东西
因为nginx已经把index.php 这URI (不是url喔) 吃掉了
而URI 也没带给Apache
所以Apache那边不管怎样都只会解析.index.php
而不会解析 .index.php/controller/action
这问题已经弄了两天
试过几百种方法都无法解决
想请问先进们能不能指点一下问题出在哪呢?
感谢!