nginx-cakephp虚拟主机重定向

nginx-cakephp虚拟主机重定向,php,cakephp,nginx,Php,Cakephp,Nginx,我是nginx新手,无法让我的站点正常工作(AWS上的Cakephp站点)。我收到消息“页面没有正确重定向”,以及一些东西如何将域附加到自身(重定向循环) 例如,当我进入我的站点sub1.mysite.com时,浏览器会添加sub1.mysite.com/sub1.mysite.com/sub1.mysite.com/sub1.mysite.com等等 这是我的网站可用配置 server { listen 80; server_name sub1.mysite.com; rew

我是nginx新手,无法让我的站点正常工作(AWS上的Cakephp站点)。我收到消息“页面没有正确重定向”,以及一些东西如何将域附加到自身(重定向循环)

例如,当我进入我的站点
sub1.mysite.com
时,浏览器会添加
sub1.mysite.com/sub1.mysite.com/sub1.mysite.com/sub1.mysite.com
等等

这是我的网站可用配置

server {
   listen 80;
   server_name sub1.mysite.com;
   rewrite ^(.*) http://sub1.mysite.com$1 permanent;
}

server {
  listen   80; ## listen for ipv4; this line is default and implied
  server_name name sub1.mysite.com;
  root /var/www/sub1.mysite.com/public_html/sub-root;
  index  index.php index.html index.htm;

  # error_page 404 errors/404.html;
  access_log /var/log/nginx/sub1.mysite.com.access.log;

    # Make site accessible from http://localhost/
    location / {
        try_files $uri $uri/ /index.php?$uri&$args;
    }
    location ~ .php$ {
        root /var/www/sub1.mysite.com/public_html/sub-root;
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

知道我做错了什么吗?

您的问题在于第一个nginx服务器指令:

server {
   listen 80;
   server_name sub1.mysite.com;
   rewrite ^(.*) http://sub1.mysite.com$1 permanent;
}
您的指令正在侦听端口80(http)并响应
sub1.mysite.com
,然后它匹配所有内容
^(.*)
,并重定向到
http://sub1.mysite.com$1永久性
其中,
$1
是您匹配的结果,因此基本上,它附加了
sub1.mysite.com
。我看不出你为什么需要这个服务器指令?它侦听与主服务器指令相同的端口,并响应相同的
server\u名称
,只需删除它即可。结果应该是(注意:我修复了一些设置,查看注释了解更多详细信息):


如果您对第一个服务器指令有其他想法,请告诉我。

您的问题在于第一个nginx服务器指令:

server {
   listen 80;
   server_name sub1.mysite.com;
   rewrite ^(.*) http://sub1.mysite.com$1 permanent;
}
您的指令正在侦听端口80(http)并响应
sub1.mysite.com
,然后它匹配所有内容
^(.*)
,并重定向到
http://sub1.mysite.com$1永久性
其中,
$1
是您匹配的结果,因此基本上,它附加了
sub1.mysite.com
。我看不出你为什么需要这个服务器指令?它侦听与主服务器指令相同的端口,并响应相同的
server\u名称
,只需删除它即可。结果应该是(注意:我修复了一些设置,查看注释了解更多详细信息):


如果您对第一个服务器指令有其他想法,请告诉我。

两天前您在哪里……只是开个玩笑:-)。说真的,非常感谢你。它起作用了!!尽管如此,我现在遇到的唯一问题是
index.php
;例如:如果我点击“dashboard”,它是
sub1.mysite.com\dashboard
,它就可以了。如果我直接去索引,它可以正常工作
sub1.mysite.com/index.php
。但是如果访问站点&不指定索引文件(sub1.mysite.com),我会得到错误“缺少控制器错误:sub1.mysite.com找不到控制器”。看起来它正在将域名传递给cake的控制器。有什么想法吗?@user20719检查我编辑的答案。您得到的错误是CakePHP错误?我从未使用过CakePHP。无论如何,如果这是一个CakePHP错误,那么这意味着您的nginx配置可能是正常的,但您的路由声明存在问题。看看你的路线2天前你在哪里…开玩笑:-)。说真的,非常感谢你。它起作用了!!尽管如此,我现在遇到的唯一问题是
index.php
;例如:如果我点击“dashboard”,它是
sub1.mysite.com\dashboard
,它就可以了。如果我直接去索引,它可以正常工作
sub1.mysite.com/index.php
。但是如果访问站点&不指定索引文件(sub1.mysite.com),我会得到错误“缺少控制器错误:sub1.mysite.com找不到控制器”。看起来它正在将域名传递给cake的控制器。有什么想法吗?@user20719检查我编辑的答案。您得到的错误是CakePHP错误?我从未使用过CakePHP。无论如何,如果这是一个CakePHP错误,那么这意味着您的nginx配置可能是正常的,但您的路由声明存在问题。看看你的路由器